循环范围的异常JavaScript

时间:2017-03-05 07:42:17

标签: javascript variables scope

从C#和Java背景到达JavaScript,我很惊讶地看到下面的代码片段有效。我从s函数返回的变量sum不应存在于此范围内。

以下示例中的JavaScript范围如何工作? s的范围应该限制在for循环内部,而不是在其结束的大括号之后。 Java或C#中的等效代码段将声明 s在当前上下文中不存在

function sum(arr) {
    for(var i = 0, s = 0; i < arr.length; s += arr[i++]) {
        // scope of s is okay here
    }
    return s; // but, shouldn't this be a violation of scope?
}

// some test code
var data = [1,2,3,4];
var total = sum(data);
console.log(total);

0 个答案:

没有答案