javascript - 如何将具有多个参数的匿名函数转换为箭头函数?
问题描述
我可以将匿名函数的值分配给这样的变量:
let x = function(y,z) { return y + z }(1,2);
x 的结果值为 3。按照https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions上的指南,我认为使用箭头函数的等效项应该是这个。
let x = (y = 1, z = 2) => { return y + z };
然而,在这种情况下 x 的值变为 NaN。这是为什么?
解决方案
let x = (y = 1, z = 2) => { return y + z }
将函数分配给变量,而不是它的调用。要首先将函数调用分配给变量,您需要调用它。因此,箭头函数相当于let y = function(y,z) { return y + z }(1,2);
:
let x = ((y = 1, z = 2) => { return y + z })()
// or
let x2 = ((y, z) => { return y + z })(1,2)
// or
let x3 = ((y = 1, z = 2) => (y + z))()
// or
let x4 = ((y, z) => (y + z))(1,2)
let y = function(y,z) { return y + z }(1,2);
console.log(x)
console.log(x2)
console.log(x3)
console.log(x4)
console.log(y)
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- ios - 当页面不在焦点时,Safari 由于空闲/不活动而丢弃 Web Socket 连接
- windows-subsystem-for-linux - 如何获得 man 命令?
- .net - 如何在没有任何外键关系的情况下包含表数据并在对象之间推送
- sql - 查询以使用 sql server 从字符串中间删除尾随或前导空格
- sql - 索引视图与表
- javascript - 当 readyState 为 1 时,Mongoose 查询不运行
- html - 带有视频的响应式 DIV
- mysql - MySQL 8.0 中的存储过程中出现错误 1064
- sql - 左外连接返回结果被排除
- arrays - 将 userDefaults 导入为 [Int],然后使用 forloop 进行迭代并切换?