每天一个前端知识(41):始终声明局部变量

frontend

Posted by Tiny on July 5, 2017
var arr = [0, 1, 2];
// 隐形的创建了一个全局变量temp
function swap(array, indexI, indexJ) {
    temp = array[indexI];
    array[indexI] = array[indexJ];
    array[indexJ] = temp;
}
swap(arr, 0, 1);
console.log(arr, window.temp); // [1, 0, 2], 0
// 显式的声明局部变量
function swap1(array, indexI, indexJ) {
    var temp1 = array[indexI];
    array[indexI] = array[indexJ];
    array[indexJ] = temp1;
}
swap1(arr, 1, 2);
console.log(arr, window.temp1); // [1, 2, 0] undefined

谨记

始终使用var声明新的局部变量

考虑使用lint工具帮助检查未绑定的变量

参考资料:https://lee134134134.github.io/page/8/