javascript - 箭头函数与 Javascript 中的函数的行为差异
问题描述
我想了解普通函数与箭头函数的行为。
箭头功能:
function arrowFunc() {
return () => arguments
}
console.log(arrowFunc(1, 2, 3)(1))
正常功能
function normalFunc() {
return function() {
return arguments
}
}
console.log(normalFunc(1, 2, 3)(1))
两个结果都应该是相同的,但是看起来上面定义的 arrowFunc 考虑了第一个 arg 列表,而 normalFunc 考虑了第二组 arg 列表。
还尝试了 babel-compilation 以了解差异,但看起来行为不同,如下所示:
通天塔输出:
"use strict";
function arrowFunc() {
var _arguments = arguments;
return function() {
return _arguments;
};
}
console.log(arrowFunc(1, 2, 3)(1));
function normalFunc() {
return function() {
return arguments;
};
}
console.log(normalFunc(1, 2, 3)(1));
解决方案
预计两个结果都相同
不,他们不是。
从箭头函数的MDN页面的第一行(强调我的):
箭头函数表达式的语法比函数表达式短,并且没有自己的
this
、arguments
、super
或new.target
。
在同一页面下方:
箭头函数没有自己的
arguments
对象。因此,在此示例中,arguments
它只是对封闭范围的参数的引用 [...]
注意:箭头函数从来没有参数对象。(原文如此)
推荐阅读
- shader - 如何防止 Light2D 节点改变 Godot 中精灵的颜色?
- javascript - React 将数据传递到另一个组件
- php - Laravel 没有将空值更新为外键列
- excel - 复制并粘贴到下一个以 B59 开头的空行
- mysql - MySQL 抛出错误“预期语句不完整;” 尝试创建触发器时
- python - geojson 文件的 JSONDecodeError
- sqlalchemy - Flask SQLAlchemy - 使用非默认命名模式查询视图。最好的方法是什么?
- java - 在 Java 中的单元测试期间无法禁用 Spring Vault
- python - 从列表列表中获取所有组合(组合算法)
- python - 从 pandas 数据框中提取第一个和最后一个匹配的索引列表