gpt4 book ai didi

javascript - 为什么 Array.prototype.includes.bind 行为异常?

转载 作者:行者123 更新时间:2023-11-30 08:18:52 26 4
gpt4 key购买 nike

鉴于 function.bind 等现有的 googleable 知识,以及以下控制代码:

console.log( [1, 2, 3].includes(2) ) // --> `true` 
console.log( [null].map(String.prototype.toUpperCase, "abc") ) // --> `["ABC"]`
console.log( Array.prototype.includes.bind([3, 4, 5])(1) ) //--> `false`
console.log( Array.prototype.includes.bind([3, 4, 5])(4) ) // -- > `true`

_ 是 underscorejs,一个通用的实用程序包装器/polyfill 东西

[1, 2, 3].some(_.prototype.includes.bind(_([3, 4, 5]))) // --> `true`

但是,为什么这段代码会产生意想不到的结果?

console.log(
[1,2,3].some(Array.prototype.includes.bind([3,4,5])) // --> `false`
)

编辑:我知道这段代码的字面形式是错误的,但这是一个 POC,真正的实现会有所不同(并且不能使用箭头函数,感谢 IE)

最佳答案

这是 includes 的语法:

arr.includes(valueToFind, [fromIndex])

还有一个可选的第二个参数fromIndex

fromIndex: The position in this array at which to begin searching for valueToFind

所以,你的代码变成这样:

[1,2,3].some((a,index) => Array.prototype.includes.bind([3,4,5])(a, index))
// OR
[1,2,3].some((a, index) => [3,4,5].includes(a, index))

它正在从 index = 2 开始寻找 3

因此,如果您要这样更改它,它将返回 true

console.log(
// looks for from index=0
[3,2,1].some(Array.prototype.includes.bind([5,4,3]))
)

关于javascript - 为什么 Array.prototype.includes.bind 行为异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57271679/

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