首页>>新闻中心>>ES6学习方法

ES6中let和const说明方法

来源: 本站    发布时间: 2021-02-20 18:06    阅读次数:

1、delete 只能删除属性值不能删除变量
新的声明方式: let
1、不属于顶层对象window
2、不予许重复声明
3、不存在变量提升
4、暂时性死区 一个封闭的作用域,在申明之前使用,必须要在前面使用
例1、
var a = 5
if(true) {
a = 6
let a
console.log(a) //Cannot access 'a' before initialization
}
例2、
function foo(a=b,b=5){
console.log(a,b) //a=
}
foo()
5、块级作用域
for(var i =0; i < 3; i++){
console.log(i) // 123
}
console.log(i) //3
如果是let则是undefined
for (var i = 0; i < 3; i++){
setTimeout(function (){
console.log(i) // 三个3
})
}
for (var i = 0; i < 3; i++){
(function (j){
setTimeout(function (){
console.log(j) // 0、1、2
})
})(i)
}
for (let i = 0; i < 3; i++){
setTimeout(function (){
console.log(i) // 0、1、2
})
}
新的声明变量 const
1、不属于顶层对象的window
2、不允许重复声明
3、不存在变量的提升
4、暂时性死区
5、块级作用域
ES5声明常量
Object.defineProperty(window, 'PI', {
value:3.14,
writable:false
})
console.log(PI)
PI = 6;
console.log(PI)
const a
a = 5 //这样声明是有问题的 必须 const a = 5
const obj = {
name: "YANGANG",
age:19
}
Object.freeze(obj) //这里面是浅层冻结最外层,如果全部冻结就需要递归,freeze只能是对象不能是数组
console.log(obj)
obj.name = "Mrs Yang"
console.log(obj) //这里面可以输出改变值,ES5五种数据类型:string number boolean undefined null 在js里面有两种存储模式栈内存和堆内存,栈内存里面存在的是地址,堆内存里面存的是值, 数组和对象是引用数据 类型他们存在是的堆内存在栈内存里面存在地址,所以const里面存在的地址不变,只是修改值

一起设计吧
上一篇: 没有了
下一篇: 解构赋值
BACK