• ES6笔记① var 和 let的区别


    let 和 var的区别    答:不同点在于作用域

    1.(全局下)首先  let关键字声明的变量是这样写会导致错误。

      let声明的变量类似于”本地变量“,函数内如何不重新声明,还是会被改变

    var a =10;
    var a ="10a";
    let b =20;
    let b ="20b";
    console.log(a);//10a
    console.log(b);//报错 Identifier 'b' has already been declared
    
    

    2.(方法内)var关键词的作用域是最近的函数作用域(如果在函数体的外部就是全局作用域);

    var snack = 'Meow Mix';
    function getFood(food) {
        if (food) {
            var snack = 'Friskies';
            return snack;
        }
        return snack;
    }
    getFood(false); // undefined
    //在函数中,用var声明的变量,会在整个函数作业域中,return时优先查找最近的函数作用域。

    2-2 .let 关键词的作用域是最接近的块作用域(如果在任何块以外就是全局作用域),这将会比函数作用域更小。说明let声明的变量只是块级作用域

      ps:getFood(true),并且没有在函数内声明,let声明的变量会改变

    let snack = 'a';
            function getFood(food) {
                if (food) {
                     let snack = 'b';
                    return snack;
                }
                return snack;
            }    
            console.log(getFood(false));//a
            console.log(snack);//a
    //这里return的还是全局变量

    3.(循环中)

    块(Block)

    这是不同点, let 只是在 for 循环中, var  却是在整个函数都是可见的。 

    //let声明
    let i = "aaa"; function odd(){ for(let i=0;i<10;i++){ console.log(i);//1,2,3,4,5,6,7,8,9 } return i; } console.log(odd());//aaa console.log(i);//aaa
    //var 声明
    var
    i = "aaa"; function odd(){ for(var i=0;i<10;i++){ console.log(i);//1,2,3,4,5,6,7,8,9 } return i; } console.log(odd());//10 console.log(i);//aaa

    原文地址:http://blog.csdn.net/lcstrive/article/details/43149167

     欢迎指出问题~~

  • 相关阅读:
    如何一键部署项目&&代码自动更新
    Node服务端极速搭建 - nvmhome
    Node服务端极速搭建 -- nvmhome
    自动生成了一本ES6的书
    在linux中给你的应用做压力测试
    .NET 跨平台服务端资料
    CabArc to create or extract a cab file
    (转)什么时候要抛出异常?
    Sprint评审会议不是Sprint演示会议
    Sprint回顾大揭秘——“宝典”来了
  • 原文地址:https://www.cnblogs.com/-ooo-/p/5733953.html
Copyright © 2020-2023  润新知