javascript - 插入排序代码中变量的范围

标签 javascript scope

我遇到了一个插入排序的工作代码,如下所示:

function insertionSort(array) {
    for (let i = 1; i < array.length; i++){
       let curr = array[i];
       for (var j = i-1; j >= 0 && array[j] > curr; j--){
          array[j+1] = array[j];
       }
       array[j+1] = curr;
    }
    return array;
}

我的问题是:行中的 j 不应该:

array[j+1] = curr;

超出范围? 我在这里缺少什么?

最佳答案

使用 var 声明 javascript 变量会使变量的范围成为它在其中声明的整个函数的范围。

反对 let,它将范围限制在它定义的 block 内。

所以,不。它不会超出范围。

关于javascript - 插入排序代码中变量的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53296455/

相关文章:

sql - 错误: "Must declare the scalar variable" for insert statements in multiple database

javascript - 我如何访问此 JSON 中此键的值?

javascript - 从 Meteor 中的 Handlebars 模板中格式化日期

c++ - 在本地范围内重新定义 typedef

c++ - 包含来自另一个文件的函数会产生范围错误(openFoam)

python 值与引用

javascript - 解析 json 数组在 angularjs 中无法正常工作

javascript - 使用jquery创建一个不刷新但后退按钮仍然有效的网站

javascript - 自动提交隐藏表单值?

Java使用extends访问变量