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)
}
网友评论