为什么这个JS循环不能从函数内部返回变量

时间:2016-06-01 14:10:35

标签: javascript html

关于下面的代码,我试图从循环内部返回一个变量。我从一个函数内部调用循环,但是当脚本运行时,我得到了#34; Uncaught ReferenceError:newVar未定义"。

有人可以解释为什么价值不归还?

https://jsfiddle.net/95nxwxf4/

<p class="result"></p>

var testVar = [0,1,2];

var loopFunction = function loopFunction() {

    for (var j=0;j<testVar.length;j++) {
        if (testVar[j]===1) {
          var newVar = testVar[j];
          return newVar;
        }   
    }
    return false;
};

var privateFunction = (function privateFunction() {

  loopFunction();
  document.querySelector('.result').innerHTML = newVar;
})();

2 个答案:

答案 0 :(得分:3)

您需要指定从loopFunction返回的值:

var privateFunction = (function privateFunction() {

  var newVar = loopFunction();
  document.querySelector('.result').innerHTML = newVar;
})();

编辑:

这是因为newVar中分配的loopFunction范围限定为该函数,这意味着它只存在于该函数内。

答案 1 :(得分:0)

未定义newVar,因为变量newVar的范围仅在loopFunction中定义。

实际上是为loopFunction返回了一个值,但它只是一个值,变量newVar已超出范围,因此未在此行中定义。

document.querySelector('.result').innerHTML = newVar;

将其更改为:

document.querySelector('.result').innerHTML = loopFunction();
相关问题