var x = 0;
function foo() {
alert(x);
}
function bar() {
var x = 20;
foo();
}
bar();
var x = 0;
function foo() {
alert(x);
}
function bar() {
var x = 20;
foo();
}
bar();
1、20是方法bar中的局部变量,在方法内。
2、0是全局变量,bar方法和foo方法都可以访问到,而foo方法访问不到bar中的局部变量,所以执行bar方法的时候调用全局变量0.多看看定义域吧
这个是作用域的问题。在第二个函数里调用第一个函数foo,foo执行时首先会在自己的作用域里查找变量x,由于foo函数定义的时候作用域里没有声明变量x,于是会自动向自己的父级作用域查找变量x,同时因为函数foo是一个全局函数,其父级作用域就是window了,这时候刚好就找到了window作用域下的变量x=0,所以这个输出结果会是0。
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答875 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决