码迷,mamicode.com
首页 > 其他好文 > 详细

ES6中var/let/const的区别

时间:2019-01-21 19:11:20      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:bsp   code   简单   src   pre   基本数据   span   OLE   log   

最近无聊看了一下前端面试题,看到不少地方要求列出var/let/const的异同,自己整理一下,算加深一下记忆。

技术分享图片

 1.作用域

var为全局作用域,而let和const为局部作用域(仅作用在大括号内),举个简单例子:

1 if(true){
2    var a = 1
3    let b = 2
4    const c = 3  
5 }
6 console.log(a) //a打印出来为 1
7 console.log(b) //b is not defined
8 console.log(c) //c is not defined

2.变量声明

var和let可以仅声明不赋值,但是const必须赋值,否则报错

var a = 1 //正确
let b = 1 //正确
const c = 1 //正确

var d //正确 d打印为undefined
let e //正确 e打印为undefined
const f //错误

3.是否可修改

var和let声明的变量,可随意修改;const声明的变量,若为基本数据类型不可修改,若为引用数据类型,可修改值,不可修改引用地址。

Vue父子组件传值,子组件中的props为const声明的变量,若为数组,清空数组的时候可以用array.length = 0(若为array = []会报错,因为修改了引用地址);

var a = 1;
a =2;
console.log(a) // 2

let b = 1;
b = 2;
console.log(b) // 2

//c为基本数据类型不可修改
const c = 1;
c = 2; //报错

//d为引用数据类型
const d = [1,2,3];
d.push(4);//对引用数据类型进行值的修改可进行
console.log(d);// [1,2,3,4]
d = [1,2,3,4,5] //对引用数据类型进行地址修改,报错

4.是否可重复声明

var可以重复声明;let和const不可重复声明.

var a = 1;
var a = 2; //不报错,可重复声明
console.log(a); // 2

//let 和 const 情况相同
let a = 3;//报错,上面已经声明过a(var 声明的也不可以)
let b = 1;
let b =2; //报错,上面已经声明过b

5.变量提升

 var 声明的变量会进行变量提升,但是赋值不提升;let和const声明的变量不会提升。

console.log(a);// a为undefined
var a =1;
console.log(a);// a为1

//let和const情况相同
console.log(b);//报错,提示 b is not defined
let b =1;
console.log(b);// b为1

 

ES6中var/let/const的区别

标签:bsp   code   简单   src   pre   基本数据   span   OLE   log   

原文地址:https://www.cnblogs.com/wan-li/p/10299434.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!