Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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 为什么';t()=>;是否返回封闭对象?_Javascript_Arrow Functions - Fatal编程技术网

Javascript 为什么';t()=>;是否返回封闭对象?

Javascript 为什么';t()=>;是否返回封闭对象?,javascript,arrow-functions,Javascript,Arrow Functions,仅用于上下文,并不重要:我正在使用此代码复制Node.js/Express控制器操作中的一些行为,以用于测试Mocha。我从status方法返回this的值,用于方法链接(res.status(200).json()用于控制器操作),因此可以在res上调用json方法,因为它是响应对象上的一个Express方法 从我的Mocha测试运行来看,this(res对象)的值似乎在第一个代码段中正确返回,在第一个代码段中,我使用ES6简明方法语法返回this,但在第二个代码段中,我尝试使用箭头函数隐式返

仅用于上下文,并不重要:我正在使用此代码复制Node.js/Express控制器操作中的一些行为,以用于测试Mocha。我从
status
方法返回
this
的值,用于方法链接(
res.status(200).json()
用于控制器操作),因此可以在
res
上调用
json
方法,因为它是响应对象上的一个Express方法

从我的Mocha测试运行来看,
this
res
对象)的值似乎在第一个代码段中正确返回,在第一个代码段中,我使用ES6简明方法语法返回
this
,但在第二个代码段中,我尝试使用箭头函数隐式返回
this
。我认为使用arrow函数也会得到同样的结果,因为在arrow函数中,
this
的值是封闭的词法范围(在本例中,似乎是
res
对象)

按预期工作
res
似乎作为
status
方法调用的值返回

const res = {
  status() {
    return this;
  },
  json: () => {},
};
未按预期工作(
res
似乎未作为
的值返回
状态
方法调用):

为什么不
()=>此
返回封闭对象?

Ciao根据:

在箭头函数中,
this
保留封闭词法上下文的
this
的值。在全局代码中,它将设置为全局对象:

所以基本上,在arrow函数中写入
()=>这个
这个
是一样的。

“在arrow函数中,
这个
的值是封闭词法范围”-不完全是,它是封闭词法范围中的
这个
值。“在本例中,似乎是
res
对象”-不,对象文字(即使“包含箭头表达式”)不构成词法范围。
const res = {
  status: () => this,
  json: () => {},
};
var globalObject = this;
var foo = (() => this);
console.log(foo() === globalObject); // true