准备找工作了,整理下之前做的有点疑惑的js基础题目和大家分享以下,如果大家觉得有用,别忘了点一下赞哦
函数作用域
var val = 1
var obj = {
val:2,
del:function(){
console.log(this)
this.val *= 2//flag1
console.log(val)//flag2
}
}
obj.del()//{val:2,del:[Function: del] } 1
这题的主要问题是我标记的
flag1处和flag2处的val有什么区别
flag1处:给obj对象修改了属性 val ,改成了 2*2 === 4
flag2处:val 变量,在 del 函数作用域中并没有声明 val 变量,所以会去上次函数作用域找,而上一层的 也没有已经声明的 val 变量,最后找到了 window 中已经声明的 val 变量,值为 1