ES2015 let const的用法

传统的var

先看一下下面的代码:

function judge(bool) {
    if (bool) {
        var foo = 'bar';

        console.log(foo);
    } else {
        console.log(foo);
    }
}

judge(false);

//输出undefined

如果参照其它语言,就会觉得很奇怪,为什么不是抛出Uncaught ReferenceError的异常。
这其实是变量提升的问题,相当于在解析时将foo提升到函数的一开始,即相当于以下形式:

function judge(bool) {
    var foo;
    if (bool) {
        foo = 'bar';

        console.log(foo);
    } else {
        console.log(foo);
    }
}

judge(false);

块级作用域的let

块级作用域就不用多说,就是用let定义的变量只在定义它的块中有效,出了这个块你就不能访问到它了。

示例:

function judge(bool) {
    if (bool) {
        let foo = 'bar';

        console.log(foo);
    } else {
        console.log(foo);
    }
}

judge(false);

//抛出Uncaught ReferenceError的异常

ES2015中的常量const

ES2015中常量的实现和一般意义上的常量有一定区别,它虽然是不能对常量进行重新定义,但还是能够修改常量的值的。

示例:

const person = ['jack', 'nike'];

person.push('jobs')

console.log(person);

//输出["jack", "nike", "jobs"]

使用场景

风格一:
1、默认使用let
2、变量定义后不再改变使用const
3、在顶级可以var(一般不用)

风格二:
1、默认使用const
2、需要改变变量值时使用let
3、不使用var

个人可以根据自己喜好,选择某一种风格使用即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文属个人笔记,不做详解,仅供参考! let命令 基本用法 ES6 新增了let命令,用来声明变量。它的用法类似于...
    R_yan阅读 29,200评论 6 18
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 5,530评论 0 2
  • let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...
    安小明阅读 4,529评论 0 0
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    卞卞村长L阅读 3,733评论 0 0
  • 当西北潇潇洒洒的春雪遇到江南遍地盛开的油菜花时,我不得不任性地背叛依然眷恋着的雪花--与我一个高原汉子而言,三月里...
    宗林的李阅读 3,218评论 2 2