且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

JavaScript变量不同作用域的测试

更新时间:2022-09-11 08:39:00

source code:

<html>
<script>
var x = 10;
foo={
 x:20,
 bar: function() {
     var x = 30;
     return this.x;
  }
}
console.log(
   foo.bar(),
   (foo.bar)(),
   (foo.bar = foo.bar)(),
   (foo.bar, foo.bar)()
); // 20 20 10 10
</script>
</html>

第一个foo.bar(): 进入函数体执行时this 指向foo对象,因此this.x为20

JavaScript变量不同作用域的测试

第二种写法实际等价于第一种:

JavaScript变量不同作用域的测试

第三次执行this指向全局变量Window:

JavaScript变量不同作用域的测试

第四次的逗号表达式等价于第三次执行:

JavaScript变量不同作用域的测试