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。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决