【问题标题】:variable not defined in forEach() javascript未在 forEach() javascript 中定义的变量
【发布时间】:2020-08-29 13:51:48
【问题描述】:

使用这个简单的函数来遍历一个数组并显示元素、索引和类型,我试图为以元音开头的单词添加一个“n”到单词 a。例如。一个数字,一个对象。

但是添加 n 的变量“n”在最终的 console.log 中是未定义的

我相信这是一个范围错误,但对 javascript 不熟悉,我正在寻求帮助

const someArr = [
  'max',
  34,
  true,
  {
    name: 'sandra',
    student: true
  },
  ['javascript', 'mongodb', 'react']
];

////////////////

function arrayTypeFinder(array) {
  someArr.forEach((elem, index) => {

    let type = typeof elem;

    if (type.charAt(0) === "a" || "e" || "i" || "o" || "u") {
      let n = "n"
    } else {
      let n = ""
    }

    console.log(`element ${elem} at index number: ${index} is a${n} ${type}`)
  })
}

///////////

arrayTypeFinder(someArr) //=> n is not defined

【问题讨论】:

  • N 不是全局定义的,它在本地定义为 ifelse 语句
  • 您的代码的另一个问题是您需要检查第一个字符是否为“a”,或者(||)第一个字符是否为“e”等...所以您需要更改你的条件是type.charAt(0) === "a" || type.charAt(0) === "e" || ...
  • if ("aeiou".includes(type.charAt(0)) { // add n }

标签: javascript foreach undefined typeof


【解决方案1】:

你需要定义外部if条件

let n = ""
if (type.charAt(0) === "a" || "e" || "i" || "o" || "u") {
    n = "n"
}

或者你可以这样使用

let n= (type.charAt(0) === "a" || "e" || "i" || "o" || "u") ? "n" :"";

【讨论】:

  • type.charAt(0) === "a" || "e" || "i" || "o" || "u" 不是检查type.charAt(0) 是否等于元音的正确方法,n 将始终设置为"n"
【解决方案2】:

一种选择是使用var 而不是let

这样,n 在所有相关范围内声明。赋值前有undefined 值:

    console.log(n) // undefined, not "ReferenceError: n is not defined", even before any assignment
    if (type.charAt(0) === "a" || "e" || "i" || "o" || "u") {
      var n = "n"
    } else {
      var n = ""
    }

【讨论】:

    【解决方案3】:

    它可以结合您的答案来工作!谢谢!

    function arrayTypeFinder(array) {
      someArr.forEach((elem, index) => {
    
        let type = typeof elem;
    
        let n = (type.charAt(0) === "a" || type.charAt(0) === "e" || type.charAt(0) === "i" || type.charAt(0) === "o" || type.charAt(0) === "u") ? "n" : "";
    
        console.log(`element ${elem} at index number: ${index} is a${n} ${type}`)
      })
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 2021-08-05
      相关资源
      最近更新 更多