JavaScript变量不同作用域的测试

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变量不同作用域的测试

上一篇:day-4


下一篇:【No.4 变量作用域】