今天遇见了一个估计大家都会犯的问题,代码如下
var a = 1;
function b() {
a = 10;
return;
function a()
{
}
}
b();
alert(a);
这里输出的值是1;大家都很吃惊吧!个人认为这里并不是作用域的原因导致的(有不同见解的可以留言我们讨论哈),导致这样的问题其实就是js的编译和执行顺序的原因
function a()
{
}
如果我们修改此处的方法名,那么输出的值就是10,大家看清楚这里的函数a 和变量的相同的哦
个人认为
a = 10;
return;
function a()
{
}
这里的代码编译如下
var a=function(){}
a=10;
return;
综合上面代码
var a = 1;
function b() {
var a=function(){}
a=10;
return;
}
b();
alert(a);
这里大家都清楚这里为什么是1了吧,访问其实就是全局变量 var a=1;