js基础-题目14

准备找工作了,整理下之前做的有点疑惑的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

上一篇:基本数据类型之布尔类型的练习


下一篇:142. 环形链表 II