ECMAScript6----var、let、const
- 电脑硬件
- 2025-08-25 04:09:01

ECMAScript6----var、let、const 1.var2.let3.const 1.var
(1)在相同作用域下可重复声明
var a = 20 var a = 30 console.log(a) // 30(2)存在变量提升
console.log(a) // undefined var a = 20(3)可修改声明的变量(与const对比)
var a = 20 a = 12(4)不存在暂时性死区 (5)与window相映射
var a = 10; console.log(window.a) // 10 2.let(1)在相同作用域下不可重复声明(与var作对比) 如下,重复声明a会报错。 (2) 不存在变量提升(与var对比)
console.log(a) // 报错 let a = 20上述代码在浏览器中会报错,如下: (3)可修改声明的变量(与const对比)
let a = 20 a = 12(4)存在暂时性死区(与var做对比) 注意:什么是暂时性死区? 在某个作用域中,用let,const定义了某变量,在该作用域内部该代码之前不能使用该变量。
var a = 123 if (true) { a = 'abc' // ReferenceError let a; }(5)不与window相映射(与var做对比)
let b = 12; console.log(window.b); //undefined 3.const(1)在相同作用域下不可重复声明(与var做对比) 如下,重复声明x会报错。 (2)不存在变量提升(与var做对比)
console.log(a) // 报错 const a = 20上述代码在浏览器中会报错,如下: (3)不可修改声明的对象(引用对象可以修改) 不可修改基本数据类型变量,如下:
const y = 12; y = 14;控制台会报错: 可以修改引用数据类型变量的某个属性,如下:
const obj1 = { name: "bob" }; obj1.name = "jack"; console.log(obj1); //不会报错,打印{name: 'jack'}但不能修改引用数据类型变量的地址,如下:
const obj2 = { name: "bob" }; obj2 = { name: "jack" }; //会报错 console.log(obj2);之所以会出现这样子的原因,这个涉及到基本数据类型和引用数据类型在内存中的存储方式不同。
基本数据类型的值直接存储在栈内存中,值与值之间独立存在,修改一个变量不会影响到其他变量。对象(引用数据类型)是保存在堆内存中的,每创建一个新对象,就会在堆内存中开辟出一个新空间,变量保存的是对象的内存地址(对象的引用)。
(4)存在暂时性死区(与var做对比)
(5)不与window相映射(与var作对比)
const c = 10; console.log(window.c) // undefinedECMAScript6----var、let、const由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“ECMAScript6----var、let、const”
上一篇
Debian软件包重构