在這段JavaScript錯誤「無法調用toString未定義」,但變量定義
creds = cp[0];
data[creds.toString()] = cp[1]; // data is an object
的鍍鉻給我的錯誤TypeError: Cannot call method toString of undefined
在第二行。不過,我通過調試器驗證了creds
的值在那個點上是1400
。
發生了什麼事?
在這段JavaScript錯誤「無法調用toString未定義」,但變量定義
creds = cp[0];
data[creds.toString()] = cp[1]; // data is an object
的鍍鉻給我的錯誤TypeError: Cannot call method toString of undefined
在第二行。不過,我通過調試器驗證了creds
的值在那個點上是1400
。
發生了什麼事?
使用for in
循環數組時,你應該非常謹慎。改用普通循環。
數組cpl
不只是數據而是函數,所以循環中的第三個cp
是函數。這就是爲什麼creds
轉向未定義。
這個環節有很好的解釋:Why is using "for...in" with array iteration a bad idea?
這是新的信息。爲什麼謹慎? –
@我添加了更多信息。 –
+1在for循環中,您可以選擇一個'cpl [i]'這是一個方法名,例如'cpl [「copy」]'。這將「cp」設置爲'creds = cp [0]'後導致'creds'爲'undefined'的函數toString()(因此字符串'function(start,length)...')' 'creds.toString();'失敗。 –