从其他语言跳过来后对JS的一个地方非常不习惯,就是变量作用域。
- block scoping:这是大多数语言使用的作用域,例如C的。
int main(int argc, char *argv[]) {
int val = 10;
{
int val = 20;
}
printf("%d", val);
// 打印 10
}
- function scoping:JS是这种,函数内嵌套的val会覆盖掉外边的val。
function f() {
var val = 10;
{
var val = 20;
}
return val;
}
var val = f();
console.log(val); // 打印 20
网友评论