美文网首页
ES6基本知识语法(一)

ES6基本知识语法(一)

作者: Freyr_sau | 来源:发表于2018-07-29 15:25 被阅读0次

    ES6 的常量写法

    语法: const 常量名 = 赋值

    const PI = 3.1415926
    console.log(PI)
    

    这里添加 console.log()进行浏览器控制台输出

    注意:常量是只读的数据,不能对其进行修改


    以往版本ES的常量实现:

    • ES3:不可实现
    • ES6:可实现,将对象设置为只读
    Object.defineProperty(window, "PI2", {
        value: 3.1415926,
        writable: false,
    })
    
    console.log(window.PI2)
    

    ES6作用域

    在函数中有闭包的概念
    在ES5中需要自定义属性才可以把循环的值赋值给函数中(作用域中)
    在ES6中只要把循环的声明变量var 改成 let就可以将值赋值给函数中(作用域中)

    作用域
    在ES5中,需要用立即执行函数对作用域进行隔离,而在ES6中则直接用 {} 就可以实现隔离的效果。

    块作用域:{ }


    范例1:在ES5中的作用域

    // ES5 中作用域
    const callbacks = []
    for (var i = 0; i <= 2; i++) {
        callbacks[i] = function() {
            return i * 2
        }
    }
    

    解释
    callbacks中的return i*2,是对变量的引用,而不是对函数变量值的引用。函数体中是一个变量,而不是一个值,因此不能正常引入循环的变量值。

    范例2:在ES6中的作用域

    const callbacks2 = []
    for (let j = 0; j <= 2; j++) {
        callbacks2[j] = function() {
            return j * 2
        }
    }
    
    console.table([
        callbacks2[0](),
        callbacks2[1](),
        callbacks2[2](),
    ])
    

    解释
    let 声明的变量有块作用域的概念,这个时候的闭包取决于当前的块作用域,会将当前值保存,供后面的闭包使用


    在ES6中定义新的作用域
    直接使用 {}

    {
        function foo() {
            return 1
        }
    
        console.log("foo()===1", foo() === 1)
    }
    

    相关文章

      网友评论

          本文标题:ES6基本知识语法(一)

          本文链接:https://www.haomeiwen.com/subject/bcgzmftx.html