染个代码 2022-11-08 17:38 采纳率: 50%
浏览 55

this为什么在严格模式下也绑定到了全局对象上?

JS严格模式的this绑定问题

下面第三步的代码中,this为什么在严格模式下也绑定到了全局对象上?

如下:

1、首先我们不使用严格模式,以下代码的this默认绑定全局对象

function foo(){
  console.log(this.a);
}
var a = 2;
foo();
//在谷歌浏览器中输出:2,
//在node中输出:undefined

2、然后我们在全局使用严格模式,以下代码会报错(TypeError)

"use strict";
function foo(){
  console.log(this.a);
}
var a = 2;
foo();
//在谷歌浏览器和node中都报错:TypeError: Cannot read properties of undefined (reading 'a')


上面的代码中的报错原因是:使用严格模式导致this不会默认绑定到全局对象,所以TypeError

3、最后我们在函数中使用严格模式,如下:

function foo(){
    console.log(this.a);
}
var a =2;
function foo2(){
    "use strict";//严格模式
    foo();//浏览器输出:2
    //nodejs输出:undefined
}
foo2();

函数foo()中的代码又绑定了全局对象,为什么?

  • 写回答

5条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 创建了问题 11月8日

      悬赏问题

      • ¥15 关于#AC正确率#的问题,如何解决?
      • ¥30 pyinstaller后不执行print且不能退出
      • ¥15 IncredBuild报错
      • ¥15 锂电池偏最小二乘法参数辩识
      • ¥15 session失效问题
      • ¥15 GMS地下水数值模拟无法打开
      • ¥15 树型结构的数据怎么匹配分支
      • ¥15 stm32F4用.引不出来结构体成员怎么解决
      • ¥30 Syntax Error: TypeError: this.getOptions is not a function的问题
      • ¥15 eclipse Android环境搭建