【问题标题】:ReferenceError: num1 is not defined - JavaScriptReferenceError:未定义 num1 - JavaScript
【发布时间】:2020-06-11 04:12:37
【问题描述】:

在 JavaScript 中运行我的简单脚本时出现以下错误:

num1 is not defined
ReferenceError: num1 is not defined
at Object.twoNumberSum (/tester/program.js:8:2)
at Object.exports.run (/tester/json_wrapper.js:8:26)
at Object.<anonymous> (/tester/main.js:21:22)
at Module._compile (internal/modules/cjs/loader.js:1200:30)
at Object.Module._extensions..js

目标是创建一个简单的函数(未针对时间复杂度进行优化),它接受两个参数:一个整数数组和一个目标总和。结果应返回一个数组,其中包含任何两个不同的整数元素,总和为目标总和。

这是我的代码:

function twoNumberSum(array, targetSum) {
  for (let i = 0; i < array.length; i++ ){
        let num1 = array[i]
    };
        for (let j =1; j < array.length; j++){
            let num2 = array[j]
        };
    if (num1 + num2 === targetSum){
        console.log([num1, num2]);
    }
}

这里的任何指针都会非常感谢,因为我不确定这是语法问题还是我正在做一些不适合 JavaScript 的事情。

【问题讨论】:

  • let 具有本地范围。

标签: javascript arrays


【解决方案1】:

let 在块范围内定义变量,因此它只存在于它所在的大括号之间。

您的第二个循环需要在第一个循环内。

【讨论】:

    【解决方案2】:

    你的代码逻辑不正确,请看下面的更新版本

    function twoNumberSum(array, targetSum) {
      let num1 = 0
      let num2 = 0
      
      for (let i = 0; i < array.length; i++ ){
        num1 = array[i]
        for (let j =1; j < array.length; j++){
          num2 = array[j]
          if (num1 + num2 === targetSum) {
            console.log(`num1 is ${num1}, num2 is ${num2}`)
            return
          }
        }
      }
      
      console.log('cannot find num1 & num2')
    }
    
    twoNumberSum([1,2,3,4], 5)

    【讨论】:

    • 我尝试了上面的内容,但它错过了几个测试用例。所以我通过嵌套 for 循环并使用“const”而不是“let”来定义 num1 和 num2 变量来调整我的代码。
    • @Codestudio 我建议您将您的代码添加到“code sn-p”,这很好,因为您和其他观众可以即时播放您的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2016-03-08
    • 2016-11-05
    • 1970-01-01
    相关资源
    最近更新 更多