Javascript:自我调用函数中的'Variable Not Defined'

Kan*_*ski 1 javascript scope

我写了下面的代码,输出平方迭代数的总和:

(function () {
    var i = 4, sum = 0; 
    while(i--) sum+=i*i;
})();
console.log(sum);
Run Code Online (Sandbox Code Playgroud)

问题是我在控制台中得到以下错误:sum是未定义的,除非我拿出总和并将其声明为全局范围://这可行,但这不是我想要的.

sum = 0;    
(function ( ) {
    var i=4 
    while(i--) sum+=i*i;
})();
console.log(sum);
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解吗?谢谢

Ray*_*nos 5

var sum = (function ( ) {
  var i=4, sum = 0; 
  while(i--) sum+=i*i;
  return sum;
})();
console.log(sum);
Run Code Online (Sandbox Code Playgroud)

您创建了一个名为的局部变量,sum并希望在其范围之外使用它.您不希望在更高的范围内声明它,因此您必须将其导出.

导出本地(原始)变量的唯一方法是return语句.