我正在观看Crockford on Javascript - Act III: Function the Ultimate大约 41 分 26 秒。他屏幕上的代码使用arguments.slice()
方式对我来说会导致错误。
function curry(func){
var args = arguments.slice(1);
...
}
他是这样解释的:
我将首先得到一个参数数组,除了第一个,因为第一个是一个函数,我不需要那个。在这种情况下,我假设我在 ES5 上,所以我没有做可怕的
Array.prototype.apply()
把戏。
问题是运行arguments.slice()
会导致这个错误:
Uncaught TypeError: arguments.slice is not a function
我正在测试肯定有 ES5 的现代浏览器!我可以让代码工作的唯一方法是如果我使用一些“可怕的”技巧,(正如他所说的那样)例如Array.prototype.slice.apply(arguments, [1])
或[].slice.call(arguments, 1);
.
他只是误会了吗?他的幻灯片有错字吗?为什么arguments.slice()
在我的 ES5 浏览器中不起作用?