JavaScript进阶(1)理清var let const

文章详细对比了JavaScript中的var、let和const的异同,强调了const常量的特性,即不能重新赋值但可修改引用类型的数据属性。let和const在块级作用域内有效,存在暂时性死区,而var则会进行变量提升。作者建议尽量避免使用var,优先考虑const,再用let。
摘要由CSDN通过智能技术生成

var let const的相同点和不同点有很多,比较琐碎,总是让人迷惑,我整理了一张表,把它们理清楚。

序号

对比点

var

let

const

1

语法规范

ES5

ES6

ES6

2

初始值是否必须

3

初始值是否能修改

否 

4

是否能重复声明

5

是否会变量提升

6

是否有暂时性死区 

7

是否能先赋值后声明 

8

作用域

函数/全局

块级/函数/全局

块级/函数/全局

补充几点

① const的初始值不能被修改,是指声明的初始值为简单数据类型,如果声明的是引用类型(比如说对象),那么它的指针不能被修改,但是它的属性和属性值是可以修改的,看下边代码

const monkey = {name:'wukong'}
monkey.name = 'liuermihou'
monkey.height = 153//可以修改属性
console.log(monkey)//{name:'liuermihou',height:153}

monkey = {}//报错Uncaught TypeError: Assignment to constant variable.

② ③暂时性死区是什么意思呢?就是let和const在声明变量之前就使用它们,会导致报错。其实就是说let和const不能先赋值后声明

book = 'Journey to the west'
let book//报错Uncaught ReferenceError: Cannot access 'book' before initialization

④ 变量提升是什么意思?变量提升,提升的是作用域。ES6中引入了块级作用域,但是ES5中没有,所以在代码块{}中用var声明的变量,会被提升为全局变量。看下边代码

for(var i = 0;i < 5;i++){

 }
 for(let j = 0;j < 5;j++){

  }
  console.log(window.i)// 5
  console.log(window.j)// undefined

PS. var给人的感觉是脾气怪,变化多端,且不易控制,所以编码建议是,不用var,尽量用const,不行了用let。

参考资料:《JavaScript高级程序设计(第4版)》3.3变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值