Rumah > Soal Jawab > teks badan
var b=7;//添加这行
function doSomething(a){
function doSomethingElse(a){
return a-1;
}
var b;//去掉这一行
b=a+doSomethingElse(a*2);
alert(b);
}
doSomething(3);//8
在《你不知道的javascirpt》案例中,在b=a+doSomethingElse(a*2)这行的上边加了var b,如果去掉
var b这行,即使在全局作用域中写入var b=7;在调用代码后,照样会输出数值8,而不是数值7;
能不能认为这行var b这行代码可有可无?求大神解答!谢谢!
巴扎黑2017-04-11 12:06:30
不是!
如果不加,只有一个全局变量b
,因此 b=xx;alert(b)
是都是访问全局变量 b
.
如果加,有两个变量b
,第一个是全局变量,第二是局部变量b=xx;alert(b)
是访问的局部变量。
你可以在doSomething(3)
后面加一句alert(b)
试试
PHP中文网2017-04-11 12:06:30
你把他去掉 之所以 值没变, 是你将 外面的b重新被赋值了 加后的值,跟外面的b是多少 没有关系;如果你不去掉,就是把加后的值赋给了里面的 变量 b;虽然变量名字都是b 但是作用域不一样,所以不是同一个b,因为根本就不是同一块内存。