首页 新闻 赞助 找找看

Array的find方法

0
悬赏园豆:5 [已解决问题] 解决于 2017-02-15 15:42
Array.prototype.find.call(function(x){return x>2},[1,23,4,4])

请问一下我这样为什么会报错呢,感谢感谢

改吧的主页 改吧 | 初学一级 | 园豆:104
提问于:2017-02-15 15:02
< >
分享
最佳答案
0

Array.prototype.find.call({},function(x){console.info(this);return x>2},[1,23,4,4])

结果是undefiend。 第一个{}是被替换的对象/方法(call的用法)。然后  Array.prototype这个对象去调用

find(function(x){console.info(this);return x>2},[1,23,4,4])。但在find中,第二个参数:可选,指定 callback 的 this 参数。

[1,23,4,4].find(function(x){console.info(this);return x>2}) 这是用[1,23,4,4]调用find可得到23结果。

收获园豆:2
淡丶无欲 | 初学一级 |园豆:87 | 2017-02-15 15:34

谢谢

改吧 | 园豆:104 (初学一级) | 2017-02-15 15:42

”第一个{}是被替换的对象/方法(call的用法“ 这句话是错的。

fun.call(thisArg[, arg1[, arg2[, ...]]]):thisArg在fun函数运行时指定的this需要注意的是,指定的this值并不一定是该函数执行时真正的this值,如果这个函数处于非严格模式下,则指定为nullundefinedthis值会自动指向全局对象(浏览器中就是window对象),同时值为原始值(数字,字符串,布尔值)的this会指向该原始值的自动包装对象。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/call

淡丶无欲 | 园豆:87 (初学一级) | 2017-02-15 15:59
其他回答(1)
0

[1,23,4,4].find(function(x) { return x > 2 }); 这样哦,妹纸……

收获园豆:3
萌萌丶小魔王 | 园豆:221 (菜鸟二级) | 2017-02-15 15:23

我知道这种写法呢?我只是想知道我用call为什么不行呢,用原型call

 

 

 

支持(0) 反对(0) 改吧 | 园豆:104 (初学一级) | 2017-02-15 15:24

@小码农雯: 倒过来哦。   Array.prototype.find.call([1, 2, 3, 4,5], function(x) { return x > 2 });

支持(1) 反对(0) 萌萌丶小魔王 | 园豆:221 (菜鸟二级) | 2017-02-15 15:30

@萌萌丶小魔王: 我去。。。。

支持(0) 反对(0) 改吧 | 园豆:104 (初学一级) | 2017-02-15 15:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册