这会引发错误:
['hello'].find('helloworld'.startsWith);
Uncaught TypeError: String.prototype.startsWith called on null or undefined
at startsWith (<anonymous>)
at Array.find (<anonymous>)
at <anonymous>:1:11
但是当包裹在箭头功能中时,它可以正常工作
['hello'].find(string => 'helloworld'.startsWith(string));
"hello"
这是为什么?
答案 0 :(得分:3)
因为不仅需要函数,还需要绑定的对象。
这可以通过使用Array#find
中的thisArg
console.log(['hello'].find(String.prototype.startsWith, 'helloworld'));
或通过将字符串绑定到函数。
console.log(['hello'].find(String.prototype.startsWith.bind('helloworld')));
// sloppy
console.log(['hello'].find(''.startsWith.bind('helloworld')));