ES6基本知识语法(一)

2018-07-29  本文已影响0人  Freyr_sau

ES6 的常量写法

语法: const 常量名 = 赋值

const PI = 3.1415926
console.log(PI)

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

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


以往版本ES的常量实现:

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)
}
上一篇下一篇

猜你喜欢

热点阅读