两者之间有什么区别..函数中的参数和参数
What's the difference between ...args and arguments in a function
两者有什么区别
function(...args) {
// args is an array
}
和
function() {
// arguments is an array-like
}
由于将类数组转换为数组非常容易,还有其他区别吗?
一个类似的问题:
myFunction.apply(null, args);
和
myFunction(...args);
-
...args
是新的;直到 ES6 才可用 - 您可以将其用于参数结构的一部分:
function(foo, bar, ...others)
- 你得到一个数组,所以不再
Array.prototype.slice.call(arguments, 0)
-
...args
对代码阅读器来说更明显 - 现在我们有了火柴和打火机,我们不需要摩擦棍子生火
但是,作为 1 的推论,并非所有内容都支持它。
Re:apply()
和传播之间的差异(当传递null
或例如thisArg
到apply()
时,如示例中所示):
myFunction.apply(null, args);
myFunction(...args);
除了 spread 是新的,所以目前没有那么广泛支持之外,apply()
接受数组或类似数组的参数对象,而 spread 将适用于任何可迭代对象。例如,您可以将Set
或Map
作为参数传播,而不能将其作为argArray
参数传递给apply()
(尽管您当然可以将其作为参数传播到 call()
: myFunction.call(whatever, ...someIterable)
)。
由于将类数组转换为数组非常容易,还有其他区别吗?
对arguments
来说,这真的不是那么容易.做错了(或者可能根本做错了)会导致JS引擎去优化功能,如果有正确的方法可以避免它需要烦人的样板来做到这一点。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 函数未将值作为参数传递
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 为什么不'我们在javascript中使用函数参数的数据类型
- 你好,这是测试用例,我必须在函数中传递n个参数
- JavaScript - 多参数函数,它是多个图像库的字符串
- 如何从两个参数函数返回随机整数
- 以无点风格在Ramda中编写一个无参数函数
- JS:将单参数函数转换为可链接函数
- 正则表达式类似于Javascript中的参数函数
- 将 $' 值传递给替换的关联参数函数
- "这个“;在参数函数中
- 如何向jquery插件发送参数函数
- 将参数函数Node.js从一个js传递到另一个js
- 如何在javascript参数函数中传递PHP post方法字符串
- 装饰 Javascript Promise.then 以便参数函数接收附加参数
- 正在分析setInterval ID'是的's参数函数
- 如何根据一个参数函数计算年龄
- 对象参数/函数和/或三元运算符混淆