当前位置: 首页 > news >正文

ECMAScript6----var、let、const

ECMAScript6----var、let、const

  • 1.var
  • 2.let
  • 3.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做对比)
注意:什么是暂时性死区?
在某个作用域中,用letconst定义了某变量,在该作用域内部该代码之前不能使用该变量。

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) // undefined

相关文章:

  • 【Pandas】pandas Series rename_axis
  • vue3面试题进阶版
  • 【设计模式精讲】创建型模式之原型模式(深克隆、浅克隆)
  • [特殊字符]边缘计算课程资料整理|从零到实战全攻略[特殊字符]
  • Rust配置笔记
  • 高并发下秒杀系统的设计
  • Hadoop一 HDFS分布式文件系统
  • RSA小总结(就目前所学)(一)
  • 排查生产sql查询缓慢
  • 【产品】“一句话需求”的指南
  • 基于STM32与BD623x的电机控制实战——从零搭建无人机/机器人驱动系统
  • Bootstrap Blazor UI 中 <Table> 组件 <TableColumn> 使用备忘01:EF Core 外码处理
  • 14天速成PAT-BASIC基础知识!
  • AI IDE 使用体验及 AI 感受
  • uvm中的激励是如何发送出去的
  • 电路笔记(信号):串联电容变小、并联电容增大的分析和计算
  • JUC并发—8.并发安全集合二
  • 为AI聊天工具添加一个知识系统 之113 详细设计之54 Chance:偶然和适配 之1
  • 支持批量导出的软件,效率拉满!
  • DeepSeek在企业中的有那些具体应用?
  • 俄总统助理:普京与美特使讨论了恢复俄乌直接谈判的可能性
  • 龚正会见巴基斯坦卡拉奇市市长穆尔塔扎·瓦哈卜、巴西圣保罗市市长里卡多·努内斯
  • 银行板块整体走强,工行、农行、中行股价再创新高
  • 毕节两兄弟摘马蜂窝致路人被蜇去世,涉嫌过失致人死亡罪被公诉
  • 梁启超“失肾记”的余波:中西医论战与最后的真相
  • 厚植民营企业家成长土壤是民营经济高质量发展的关键