为什么JS不强制“ for循环”中i的值?

问题描述 投票:0回答:1

给出两个函数(预期输出为//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在函数内部被强制后,便无法再次被强制?

给出两个函数(预期输出为// d):function fearNotLetter(str){for(let i = 0; i

您是否尝试过:

str.charCodeAt(parseInt(i, 10))

javascript coercion
1个回答
0
投票

您是否尝试过:

© www.soinside.com 2019 - 2024. All rights reserved.