Javascript的作用域和C++比较类似,它就是一个由内向外找的过程,内部的名字会掩盖外部的名字(这点Java是不可以的)。但是它有几点和C++是不一样的:
[1] 它的block是没有作用域的,也就是说你在if,for这样的block里面定义的变量,外面是可以访问的。
[2] 下面这个语句它和C++完全不一样:
var a = 10;
function infoa() {
alert(a);
var a = 20;
alert(a);
}
infoa();
这段javascipt执行的结果是,先弹出一个对话框,undefined,然后才是20。而如果是类似的C++语句,结果是10和20。
但是最好的建议依然是,不要作用域掩盖,接受Java的思想;变量使用之前一定要定义并且赋值。