javascript let 和 var 不同点

原文地址

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/let

http://blog.csdn.net/nfer_zhuang/article/details/48781671

let是区块级别的变量,作用域是当前花括号以内

var是函数级别的变量,使用严格模式

示例

[pcsh lang="js" tab_size="4" message="" hl_lines="" provider="manual"]

    <ul id="list">
    </ul>
    <script type="text/javascript">
    var list = document.getElementById("list");

    for (let i = 1; i <= 5; i++) {
        var item = document.createElement("LI");
        item.appendChild(document.createTextNode("Item " + i));

        // 这里用let,每次进入{} j都会重新创建并赋值
        // 如果是var,他是函数级别的,创建一次后,后续会被覆盖掉
        let j = i;
        item.onclick = function(ev) {
            console.log("Item " + j + " is clicked.");
        };
        list.appendChild(item);
    }
    </script>

[/pcsh]

[pcsh lang="js" tab_size="4" message="" hl_lines="" provider="manual"]

    var varTest = 'test var OK.';
    let letTest = 'test let OK.'; 
    {
        var varTest = 'varTest changed.';
        let letTest = 'letTest changed.';
    }
    // 输出varTest changed
    console.log(varTest); 
    // 因为let在自己的花括号以内有作用域,所以值不会被改变
    // 如果注释第一个let则会报错,因为第二个let变量只在他的括号内有效
    console.log(letTest);

[/pcsh]

 

此处评论已关闭