gpt4 book ai didi

javascript - 为什么 JS 不会将 i 的值强制转换为 "for in loop"?

转载 作者:行者123 更新时间:2023-12-04 10:51:19 25 4
gpt4 key购买 nike

给定两个函数(预期输出为 //d ):

function fearNotLetter(str) {

for (let i = 0; i < str.length; i++) {
let code = str.charCodeAt(i)
if (code !== str.charCodeAt(0) + i) {
return String.fromCharCode(str.charCodeAt(0) + i)
}
}
return undefined
}

fearNotLetter("abce");

// d


function fearNotLetter(str) {

for (let i in str) {
let code = str.charCodeAt(i)
if (code !== str.charCodeAt(0) + i) {
return String.fromCharCode(str.charCodeAt(0) + i)
}
}
return undefined

}

fearNotLetter("abce");

// ϊ

我发现 i 的值使用 for...in 强制为字符串环形。在我的理解中,if 语句失败,因为 i 的值不再是数字,因此无法求和。
我的问题是,为什么 JS 不强制 i返回 if 语句中的数字 (str.charCodeAt(0) + i ) ?并允许以与他相同的方式完成求和 for...loop ?
是不是因为,曾经 i在函数内部被强制,那么就不能再被强制了?

最佳答案

在第一个函数中设置 i 的类型至 number当您将其初始化为数字时。在第二个函数中 i是可迭代对象的键,所以它的类型是 string .根本没有类型转换。

关于javascript - 为什么 JS 不会将 i 的值强制转换为 "for in loop"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59457409/

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