gor*_*i93 7 javascript use-strict 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
Run Code Online (Sandbox Code Playgroud)
我认为胖箭头上下文也应该被未定义覆盖,或者我的假设错了?
MDN说箭头功能:
与严格模式的关系
鉴于这
this是词汇,严格的模式规则this被忽略了.Run Code Online (Sandbox Code Playgroud)var f = () => {'use strict'; return this}; f() === window; // or the global object
词法规则this优先于严格模式this规则.
我们可以通过检查可能值的纯英文说明在ES2015规范很容易看到这个功能的[[ThisMode]]插槽,它可以是lexical,strict或global:
定义如何
this在函数的形式参数和代码体内解释引用.lexical意味着this指this的是词汇封闭函数的值.strict表示this完全按函数调用提供的值使用该值.global表示将this值undefined解释为对全局对象的引用.
换句话说,函数的this行为可以是严格的,非严格的,也可以是词法的.如果函数[[ThisMode]]是词法(就像箭头函数一样),它会使函数的严格/非严格状态与确定this设置行为无关.
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |