js中定义声明变量的三种方式var和let,const的区别

var和let,const区别

一.var

1.var属于ES5范畴

2.预解析

var有预解析阶段,会被js解析器扫描,然后放到仓库,等待逐行代码的执行,此时var声明变量初始值为undefined;

3.声明提升

var会存在声明提升,当js解析器扫描到var关键字后,会将var声明的变量放到当前作用域的顶部

4.作用域 

全局作用域或者函数作用域

5.挂载对象

var声明的全局变量会挂载在window对象上

二.let

1.let属于ES6规范

2.let只在块级作用域有效

一般一个大括号就是一个块

3.let声明的变量不会提升

一般let声明的变量要在声明之后使用

alert(a); 
var a = 2;

alert(b); 
let b = 2;
//注意:let声明的变量一定要在声明之后使用,否则报错。

4.let不允许重复声明变量

let a = 1;
let a = 2; // 会报错

5.不能通过let声明和形参相同的变量

function test(a) {
    let a = 123;
    console.log(a);
}
test(456);

6.let声明全局变量

let声明全局变量,不能成为window属性,不能挂载在window对象上

7.暂时性死区 

ES6 明确规定,如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。

三.const

1.const属于ES6规范

2.const声明只读常量

const常量一旦声明,常量不能重新赋值

3.必须初始化

const一旦声明,就必须立即初始化,不能留到以后赋值

4.const只在块级作用域有效 

5.const本质

const实际上保证的,并不是值不能改变,而是指向的那个内存地址不能改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值