下面的代码失败:为什么传递函数引用失败,而使用函数声明不是?
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