それで、今日JavaScriptをいじり始めました。そして、何かが関数であると確信しているように見え、同時にそれは関数ではないと確信しているという面白いケースに出くわしました。このコードは問題を示しています:
var arr1 = Array(1)
for (i = 0; i < arr1.length; i++) {
arr1[i] = function(n) { return n + i }
}
var arr2 = Array(1)
for (j = 0; j < arr2.length; j++) {
arr2[j] = function(n) { return arr1[j](n) }
}
typeof arr2[0] // "function"
arr2[0](2) // TypeError: Property '1' of object [object Array] is not a function
ここから、に変数を割り当てることができarr2[0]
、エラーが持続します。これを複製するためにクロージャまたは配列が必要かどうかはわかりません。
私のコードに何か問題がありますか、それともこれはJavaScriptの奇妙な点の1つにすぎませんか?これは特に答えが必要なことではありませんが、少しばかげているので、理由があるかどうか知りたいです。