var o = {
fn : function(){
var a=1;
//第一种情况:如果把bbb写在这儿外部调用这个bbb可以取到变量a的值
// this.bbb = function(){
// console.log(a);
// }
},
//第二种情况:如果把bbb写在这儿外部调用用这个bbb不可以取到变量a的值
bbb: function(){
console.log(a);
}
}
function func(){
o.bbb();//第一种情况可以打印出a的值,第二种不可以。第一种为什么可以呢,bbb是在func函数作用域里面调用啊??
}
o.fn();
func();//
外部调用
为什么呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
函数内部是一个独立作用域
第一问,可以。外层函数有变量a.
第二问,不可以。对象没有变量a.
当函数内部找不到变量的时候,它会往外层找。也就是上层。
先看第一种情况:
此处涉及到js函数作用域;变量a是局部变量,只在函数fn内部起作用,所以可以打印出1;
再看第二种情况:
函数内部定义的变量a,在函数fn外是无法获取到的,所以此时是打印出来:
Uncaught ReferenceError: a is not defined关于函数作用域,闭包,变量提升等希望楼主看一下 js高程