JavaScript在ES6中的新变量 let 、const和解构赋值

目录

前言

一、let变量

1.块级作用域

2.不存在变量提升

3.使用let变量需要先声明后使用

4.不能重复声明

5.总结

二、const变量

1.块级作用域

2.声明常量必须赋值

3.常量赋值不能修改

三、let、const和var的区别

四、结构赋值

数组

1.数组的结构赋值

2.二维数组

3.省略变量

4.合并数组

5.默认值

对象


前言

为什么学习es6

每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语言本身也有一些令人不满意的地方。

- 变量提升特性增加了程序运行时的不可预测性

- 语法过于松散,实现相同的功能,不同的人可能会写出不同的代码

一、let变量

1.块级作用域

如果在外面选择输出,就会出现未定义的报错提示。


			for(let i=1;i<10;i++){
			 	console.log(i);
			 }
			// console.log(i);//未定义

2.不存在变量提升

let必须写在输出的前面,不然会直接报错,需要格外的注意,也是先定义变量才能使用。


			  //console.log(i);//报错
			  let i=1;
			  console.log(i);

3.使用let变量需要先声明后使用

需要先声明变量,不声明变量直接使用,会出现没有声明的提示,要牢记先声明后使用的流程。

             let i=1;
			 if(true){
				 i=2;
			//let i=3;//报错
			 }
			 console.log(i);

4.不能重复声明


			    let a=1;
			 // let a=3; //重复了 报错

5.总结

-- let 关键字用来声明块级变量。

-- 特点就是在{}声明具有块级作用域,var变量无此特点。

-- 防止循环变量编程全局变量。

-- let 关键词无变量提升。

-- let 关键词有暂时性死区的特点。{先声明后使用}

二、const变量

1.块级作用域

与let用法相同

var a=1;
if(true){
const a=2;
console.log(a);//输出为2
}

2.声明常量必须赋值

   if(true){
	const a;//报错
	console.log(a);
}

3.常量赋值不能修改

对象可以进行添加,但是不能修改整体的地址。

对象的本身是可变的,所以可以添加属性,但是地址不可改变。

if(true){
	const a=2;
    a=3;
	console.log(a);// 报错
}


const person = {};
person.name ="张三";
person.age=18; 
person = {};//报错

三、let、const和var的区别

- 使用 var 声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。

- 使用 let 声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。

- 使用 const 声明的是常量,在后面出现的代码中不能再修改该常量的值。

- 使用let,const的声明的变量不属性顶层对象,返回undefined。

四、结构赋值

数组

1.数组的结构赋值

   let arr =[1,2,3];
   let [a,b,c] = arr;
   console.log(a,b,c);//1,2,3

2.二维数组

let [a,[b,c],d] = [1,[2,3],4];
 console.log(a,b,c,d);//1,2,3,4

3.省略变量


 let [a,,c] = [1,2,3];
 console.log(a,c);//1,3

4.合并数组

    let [a,...b] = [1,'a','b','c'];
    console.log(a,...b);//1,a,b,c

5.默认值

 如果是undefined 默认值生效

 
let [a,b='2'] = [1,undefined];
 console.log(b);//2

对象

 let Person = {realname:"张三",age:19};
 let {realname,age} = Person;
 console.log(realname,age);//张三,19


 let Person = {realname:"张三",age:19};
 let {realname:myrealname,age} = Person;//重命名
 console.log(myrealname,age);//张三,19


 let Person = {realname:"张三",age:19};
 let {realname:myrealname,age height=183} = Person;//默认值
 console.log(height);//183

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小余努力搬砖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值