const、let、var区别

const、let、var区别

  • 0、前言
  • 1、区别
  • 2、示例
    • 2.1 提前调用报错
    • 2.2 const与 let 定义的变量不能重复
    • 2.3 const与 let定义的变量如果在{}中只能在{}中调用
    • 2.4 const定义的变量不能重复赋值。

0、前言

let和const是ES6新增的声明变量的关键词,之前声明变量的关键词是var。

1、区别

声明方式 变量提升 暂时性死区 重复声明 初始值 作用域
var 允许 不存在 允许 不需要 非块级
let 允许 存在 不允许 不需要 块级
const 不允许 存在 不允许 需要 块级

★ var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined。let和const不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError错。
★ let和const存在暂时性死区。即只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
★ var允许重复声明变量。let和const在同一作用域不允许重复声明变量。
★ const定义的变量不可以进行修改,而且定义时一定要初始化,而let和var声明的变量不用。
★ let、const声明的变量仅在块级作用域内有效,var 声明变量是全局的,没有块级作用域功能

2、示例

2.1 提前调用报错

代码如下:

// 提前调用 预解析
console.log(num1)
// // 提前调用 结果是报错
console.log(num2)

// var 定义的变量 
var num1 = 100
let num2 = 200;

效果如下:
在这里插入图片描述

2.2 const与 let 定义的变量不能重复

代码如下:

// var 定义的变量 
var num1 = 100
let num2 = 200

// 变量名称重复 重复赋值效果
var num1 = '北京'
console.log(num1)

// 变量名称重复 结果是报错
let num2 = '杭州';

效果如下:
在这里插入图片描述

2.3 const与 let定义的变量如果在{}中只能在{}中调用

代码如下:

// 在 {} 中 使用 let 定义变量 只能在 {} 中 使用
// 如果需要在 {} 中 对 let 定义的变量 进行操作 
// 提前定义 变量 在 {} 中 进行赋值操作
if (true) {
	var a = 300
	let b = 400
	// let 声明的变量 在 {} 中可以调用
	// 对 {} 外定义的变量 进行赋值操作
	console.log(b)
}

console.log(a)

// let 声明的变量 在 {} 外 不能调用 
console.log(b);

效果如下:
const、let、var区别_第1张图片

2.4 const定义的变量不能重复赋值。

代码如下:

// const 定义的变量 不能重复赋值
const c = 10
c = 100
// 结果是报错

效果如下:
在这里插入图片描述

你可能感兴趣的:(JavaScript,javascript,开发语言,ecmascript)