Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中使用strict不适用于胖箭头?_Javascript_Ecmascript 6_Use Strict - Fatal编程技术网

在javascript中使用strict不适用于胖箭头?

在javascript中使用strict不适用于胖箭头?,javascript,ecmascript-6,use-strict,Javascript,Ecmascript 6,Use Strict,我发现了一个有趣的例子,在javascript中,“使用严格”并没有像预期的那样工作。 以下功能 "use strict"; var y = () => { console.log(this); } var x = function () { console.log(this); } x(); // undefined due to use strict y(); // window object 我认为胖箭头上下文也应该被未定义的内容覆盖,还是我的假设是错误的?M

我发现了一个有趣的例子,在javascript中,“使用严格”并没有像预期的那样工作。 以下功能

"use strict";

var y = () => {
    console.log(this);
}

var x = function () {
    console.log(this);
}

x(); // undefined due to use strict
y(); // window object
我认为胖箭头上下文也应该被未定义的内容覆盖,还是我的假设是错误的?

MDN说:

与严格模式的关系

鉴于
是词法性的,因此忽略了与
相关的严格模式规则

var f = () => {'use strict'; return this};
f() === window; // or the global object
词法
this
规则优先于严格模式
this
规则

在ES2015规范中,我们可以通过检查的可能值的简单英文描述轻松看出这一点,这些值可以是
词法的
严格的
、或
全局的

定义如何在函数的形式参数和代码体中解释此引用
lexical
表示
this
指的是一个词汇封闭函数的
this
strict
表示
值的使用与函数调用所提供的完全相同<代码>全局表示
值的
未定义
被解释为对全局对象的引用


换句话说,函数的
行为可以是严格的、非严格的或词汇的。如果函数的
[[ThisMode]]
是词法的(与箭头函数一样),它会使函数的严格/非严格状态与确定
此设置行为无关。

因为您是在全局范围内执行此操作的(其中
窗口
对象),而
这个
在arrow函数中是词法的,我看不出这有什么出乎意料的地方?