我刚刚开始学习JavaScript,并且对if
语句有疑问:为什么当我在if
内分配变量时,不需要在前面添加var
并将其分配到if
之外时,必须添加var
。
因此,主要的问题是:为什么我不能像这样在var
内添加if
if (var number = 5) {
document.write("successful");
} else {
document.write("failed");
}
如果我不添加变量,则将变量分配给这样的值
if (number = 5) {
document.write("successful");
} else {
document.write("failed");
}
我知道这是一个简单的问题,但这让我感到困惑。
答案 0 :(得分:0)
可能您想做的是这样:
var number = 4;
if (number == 5){
document.write("successful");
}
else{
document.write("failed");
}
答案 1 :(得分:0)
这是因为var表示您声明了一个变量。但是,您不能在if条件中声明变量。您可以将条件赋值给先前声明的变量。这是Javascript的语法。
答案 2 :(得分:0)
JavaScript不支持块级作用域,这意味着在块结构(例如if
或for
循环)中声明变量不会限制该变量声明。
请记住,在将分配给某物之前,您需要声明一个变量。
var x;
x = 'variable x is a string that was previously declared';
这意味着在您的第一个语法不正确的示例中,您试图在语句中定义一个变量,该语句应对照其他内容检查该变量的真相。这似乎实际上是您在第二个示例中尝试做的事情,除了必须使用双等于==
(比较)或三等于===
(严格平等或身份)。
这时,您可能想了解使用=
,==
和===
的区别。
var a = 55;
a == 55 /* In this case the output will be true if you have declared the previous variable */
a === 55 /* Will return true as the content is the same and also the type (they are both numbers) */
a === '55' /* Will return false, as you are comparing a number against a string */
请注意,JavaScript还具有两个变量 scopes :全局变量和局部变量。
var b = 'hello world';
function test() {
console.log(b);
}
test();
/* Output will be:
hello world
*/
var b = 'hello world';
function test() {
var b = 'Wonderful World';
console.log(b);
}
console.log(b);
test();
console.log(b);
/* Output will be:
hello world
Wonderful World
hello world
*/