JavaScript变量不同作用域的测试

48 阅读1分钟

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
clipboard1
第二种写法实际等价于第一种:
clipboard2
第三次执行this指向全局变量Window:
clipboard3
第四次的逗号表达式等价于第三次执行:

clipboard4