大家有空帮我看下这个问题哈,不胜感激
代码如下:
var val = 1;
var json = {
val: 10,
dbl: function () {
val *= 2;
},
};
json.dbl();
console.log(json.val + val);
晚辈问题:
浏览器检查发现最终输入的结果是12,我的疑问是第5代码val *= 2; 为什么它指向的是全局变量,而不是json对象的val,json对象的val不应该是它的上一层作用域么?dbl函数没有val这个变量,不是往上一层作用域查找么?
var val = 1;
var json = {
val: 10,
dbl: function () {
val *= 2; //当前函数作用域没有val这个变量,顺着函数作用域往上找,上一层作用域不应该是val:10么,理应求得val20
},
};
json.dbl();
console.log(json.val + val); //20+1=21,
挠头盼复