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 ブラウザで動作しないのはなぜですか?