下面的代碼失敗:爲什麼傳遞函數引用失敗,而使用函數聲明不是?
array.map(String.prototype.toLowerCase)
拋出Uncaught TypeError: String.prototype.toLowerCase called on null or undefined
。確實,this
沒有設置,我明白了。
但是,什麼是奇怪的是,下面的代碼返回空字符串數組沒有失敗:
array.map((s) => String.prototype.toLowerCase(s))
任何想法,爲什麼? 請注意,我知道這不是具有小寫字符串數組的方式。我只是想知道爲什麼這兩種方法表現不同。
換句話說,.map(String.prototype.toLowerCase)
和.map((s) => String.prototype.toLowerCase(s))
之間的區別是什麼?我認爲是相同的,但很明顯,它的行爲有所不同。請注意,在這裏,String.prototype.toLowerCase
可以被任何東西取代。
這將無法工作既不併沒有真正回答這個問題。換句話說,'.map(String.prototype.toLowerCase)'和'.map((s)=> String.prototype.toLowerCase(s))'有什麼區別?我認爲是相同的,但很明顯,它的行爲有所不同。 – sp00m
查看編輯部分 –
我認爲這不完全正確,但它幫助我找出答案,所以謝謝;)基本上,國際海事組織,第一個有這個設置爲undefined,而第二個設置爲String.prototype。看到我自己的答案。 – sp00m