测试用例
function cprint(str) {
console.log(str);
}
var name = "cc";
function temp() {
cprint("1:" + name);
{
var name = "inner cc";
};
cprint("2:" + name);
}
temp();
测试结果
1:undefined
2:inner cc
结论
JavaScript没有块级作用域,最小的是方法作用域。所以,虽然定义了外部变量name,而且在temp方法中定义同名变量name之前使用了name,仍然得到undefined的结果。方法内部任意位置定义的变量的作用域是整个方法。
function temp() {
function a() {
var name = 1;
};
cprint(name); // cc
}
以上这种情况是要注意的,方法a的变量作用域也是只限于方法a的内部,外部是不能访问的,所以说变量作用域是一方法为最小单位的。