bool。这有效: filteredList = list.filter(func-6ren">
gpt4 book ai didi

javascript - 为什么我需要在 node.js 中写 "function(value) {return my_function(value);}"作为回调?

转载 作者:IT老高 更新时间:2023-10-28 23:09:23 25 4
gpt4 key购买 nike

对 JS 完全陌生,所以如果这是令人难以置信的明显,请原谅。

假设我想使用映射字符串的函数 f 过滤字符串列表 -> bool。这有效:

filteredList = list.filter(function(x) { return f(x); })

这失败了:

filteredList = list.filter(f)

为什么???

代码示例:

 ~/projects/node (master)$ node
> var items = ["node.js", "file.txt"]
undefined
> var regex = new RegExp('\\.js$')
undefined
> items.filter(regex.test)
TypeError: Method RegExp.prototype.test called on incompatible receiver undefined
at test (native)
at Array.filter (native)
at repl:1:8
at REPLServer.self.eval (repl.js:110:21)
at Interface.<anonymous> (repl.js:239:12)
at Interface.EventEmitter.emit (events.js:95:17)
at Interface._onLine (readline.js:202:10)
at Interface._line (readline.js:531:8)
at Interface._ttyWrite (readline.js:760:14)
at ReadStream.onkeypress (readline.js:99:10)
> items.filter(function(value) { return regex.test(value); } )
[ 'node.js' ]
>

最佳答案

您正在传递对“test”函数的引用,但是当它被调用时,正则表达式对象将不存在。换句话说,在“测试”中,this 的值将是 undefined

你可以避免这种情况:

items.filter(regex.test.bind(regex))

.bind() 方法将返回一个函数,该函数将始终以“regex”的值作为 this 运行。

关于javascript - 为什么我需要在 node.js 中写 "function(value) {return my_function(value);}"作为回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com