var和let还有const的区别

大部分人一般使用的是var

但是在es6中添加了let和const,语法逐渐规范化,大家是否在for循环遍历的时候,单击多个,每一个都有各自的效果,但是事实上只有一个有效果,为什么呢,有可能是代码哪里问题,可能会报错,但是没有报错,又效果出不来,估计是使用了var命名变量了。

let

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

这里还有个点要说明的,就是 for循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。 

var和let

1、函数作用域 vs 块级作用域

        let声明的变量只在代码块(通常是{ }所形成的代码块)中有效。

2、变量提升 vs 暂时性死区

3、let不允许重复声明

4、全局变量 vs 全局对象的属性

const

使用const声明变量的时候,必须同时赋值,否则会报错。

注:复合类型const变量保存的是引用。因为复合类型的常量不指向数据,而是指向数据(heap)所在的地址(stack),所以通过 const 声明的复合类型只能保证其地址引用不变,但不能保证其数据不变。


总结:

    最好使用let和const,虽然需要重新定义变量啥的,但是比var稳定得多。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容