let声明和const声明

       一.let声明

       1. let和var作用差不多,但有非常重要的区别。最明显的区别就是,let的声明的范围是块作用域,但是var声明的范围是函数作用域。

        2.块作用域是函数作用域的子集,因此适用于var的作用域限制也同样适用于let。

        3.let不允许同一个块级作用域中出现冗余声明(不能声明相同名称的变量)。而js引擎会记录用于声明变量声明的标识符不会报错,因此嵌套使用不会报错。

        4.对冗余声明报错不会因混用let和var而受影响。这两个关键字声明的并不是不同类型的变量,只是指出变量的相关作用域如何存在。

var name;

let name;//SyntaxError

(1)暂时性死区

let和var另一个重要区别就是let声明的变量不会在作用域中被提升。那么在let声明之前不能以任何方式来引用未声明的变量。而在声明执行前的瞬间被称为“暂时行死区”。报ReferenceError。

(2)全局声明

和var关键字不同,使用let在全局声明的变量不会成为window对象的属性。

(3)条件声明

let不像var不能依赖条件声明模式。其实依赖条件声明反而会使程序更加难以理解。不依赖是件好事。

(4)for循环中的let声明

一个例子:for (var i = 0 ;i<5;++i ){

setTimeout(()=>console.log(i)),0}

你可能以为会输出0,1,2,3,4

实际上会输出5,5,5,5,5

而let就会输出0,1,2,3,4

二.const声明

const行为和let基本相同,唯一一个重要区别就是声明变量是初始化变量就是给它赋值,且修改const变量会导致运行错误。

const age = 20;//

age=36//TypeError 给常量赋值

当然他的限制只适用于它指向的变量的引用。就是const引用一个对象,那么修改对象内部属性并不违反const限制。

const person = {};

person.name="caicai";//正确的

三.使用

有了let和const,限制自己只使用let和const有助于提升代码质量,因为变量有了明确的作用域,声明位置,以及不变的值。

const优先,let次之。使用const声明可以让浏览器运行时强制保持变量不变,也可以让静态代码分析工具提前发现不合法的赋值操作。因此大量开发者认为因优先使用const,只有在提前知道未来会修改的变量时使用let。可以使开发者更有信心推断某些量的值永远不会变,同时也能迅速发现因意外导致的非预期行为。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值