js的var, let, const 的区别

JS 中作用域有:全局作用域、函数作用域。没有块作用域的概念。
ES6 中新增了块级作用域。块作用域由 { } 包裹,if 语句和 for 语句里面的 { } 也属于块作用域。

  1. var 声明的变量有变量提升的特性,而 let、const 没有
console.log(a)  // undefiend
var a = 10;
// 相当于
var a;
console.log(a); // undefiend
a = 10;

console.log(b)  // 报错 未定义
let b = 10;

console.log(c)  // 报错 未定义
const c = 10;
  1. var 声明的变量会挂载到 windows 对象上,所以使用 var 声明的是全局变量,而 let 和 const 声明的变量是局部变量, 块级作用域外不能访问
if(true) {
    var a = 10;
    let b = 10;
    const c = 10;
}
console.log(a);  // 10
console.log(b);  // b is not defined
console.log(c);  // c is not defined
  1. 同一作用域下 let 和 const 不能重复声明同名变量,而var可以
var a = 10;
let b = 10;
const c = 10;

var a = 20;
console.log(a);  // 20

let b = 20;  // 报错 b 已声明不能重复声明

const c = 20;  // 报错 c 已声明不能重复声明
  1. const 的特点
    • 声明后不能再修改
    • 一旦声明必须赋值
    • 如果声明的是复合类型数据,可以修改其属性
// const a;  报错 必须赋值

let aa = 10;
aa = 20;
console.log(aa);  // 20

const a = 10;
// a = 20;  报错 不能修改

const arr = ['杨和苏'];
arr[0] = 'GAI'
console.log(arr);  // ["GAI"]

const obj = {name: '大傻'};
obj.name = '刘聪';
obj.age = 38;
console.log(obj);  // {name: "刘聪", age: 38}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温情key

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值