• 目录
  • 简介
  • 收藏

    烂尾楼

    莫导喜欢听人叫他爸爸…… 要是让莫导的广大粉丝知衣冠禽兽的莫导居然有这个癖好……   你以为会发生 粉转黑、路转喷这样的事情吗?   不,他们会说我们愿意。   爸爸爹爹皇阿玛,换着花样叫都行!   床上床下叫都没关系!

    第3章

    小说: 烂尾楼 作者:衣衫似风雪 字数:1247 更新时间:2024-03-29 17:47:19

    1、let命令

    ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

    {

    let a = 10;

    var b = 1;

    }

    a // ReferenceError: a is not defined.

    b // 1

    不存在变量提升

    var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。

    为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。

    // var 的情况

    console.log(foo); // 输出undefined

    var foo = 2;

    // let 的情况

    console.log(bar); // 报错ReferenceError

    let bar = 2;

    不允许重复声明

    let不允许在相同作用域内,重复声明同一个变量

    // 报错

    function func() {

    let a = 10;

    var a = 1;

    }

    // 报错

    function func() {

    let a = 10;

    let a = 1;

    }

    //因此,不能在函数内部重新声明参数。

    function func(arg) {

    let arg;

    }

    func() // 报错

    function func(arg) {

    {

    let arg;

    }

    }

    func() // 不报错

    块级作用域

    ES6 允许块级作用域的任意嵌套。

    {{{{

    {let insane = 'Hello World'}

    console.log(insane); // 报错

    }}}};

    2、const 命令

    const声明一个只读的常量。一旦声明,常量的值就不能改变。

    const PI = 3.1415;

    PI // 3.1415

    PI = 3;

    // TypeError: Assignment to constant variable.

    上面代码表明改变常量的值会报错。

    const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

    const foo;

    // SyntaxError: Missing initializer in const declaration

    上面代码表示,对于const来说,只声明不赋值,就会报错。

    const的作用域与let命令相同:只在声明所在的块级作用域内有效。

    if (true) {

    const MAX = 5;

    }

    MAX // Uncaught ReferenceError: MAX is not defined

    const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。

    if (true) {

    console.log(MAX); // ReferenceError

    const MAX = 5;

    }

    上面代码在常量MAX声明之前就调用,结果报错。

    const声明的常量,也与let一样不可重复声明。

    var message = "Hello!";

    let age = 25;

    // 以下两行都会报错

    const message = "Goodbye!";

    const age = 30;

    作者:喷子键盘侠

    链接:https://www.jianshu.com/p/980210313060

    来源:简书

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    Email
    lovenovelapp@gmail.com
    Facebook主页
    @Lovenovel
    Twitter
    @lovenovelapp