温习es6

本文详细探讨了ES6中let、const和var定义变量的关键字区别。let仅在其所在的代码块内有效,不存在变量提升,不允许同一作用域内重复声明;const用于定义常量,其值不可更改,同样没有变量提升;var则在定义块级作用域之外也是有效的,并有变量提升现象。此外,还提到了let和const在块级作用域内的暂时性死区,以及const定义对象时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一天

1.let和var区别:

es6中新引入一个定义变量的关键字:let。
不同点:let定义的变量只在该命令的代码块里有效,而var在定义命令块外也同养有效。
let : 适用于for循环中;不存在变量提升(const也不存在变量提升),不允许在相同作用域内重复声明同一个变量,必须先定义后使用不然会报错,在某一个块级区域内存在暂时性死区,即:

let temp = 2;
{
  temp = 'aa';
  let temp;
}
//会报错,此时花括号内的temp相当于还未定义过(const也有该性质)

var : 适用于全局变量,存在变量提升,即可以先使用后定义

{
  let temp = 2;  
}
//上面的temp只在花括号内有效

{
  var temp = 2}
//此时的temp在花括号外面同样有效

const :定义常量,一旦定义之后该值将不能被改变,和let一样不存在变量提升,在某一个块级区域内也存在暂时性死区。constconst实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动,所以定义对象之后不能在把其他的对象赋值给该对象

onst foo = {};

// 为 foo 添加一个属性,可以成功
foo.prop = 123;
foo.prop // 123

// 将 foo 指向另一个对象,就会报错
foo = {}; // TypeError: "foo" is read-only
const a = 12;
//从此a的值不能为改变
const a; //会报错,const一旦定义之后就得赋值,只定义不赋值会报错

某些隐藏性死区:

function bar(x = y, y = 2) {
  return [x, y];
}
bar(); // 报错,此时形参中的x默认等于y,但是y并未声名定义
function bar(x = 2, y = x) {
  return [x, y];
}
bar(); // 结果[2, 2],此时的x先定义为2,在赋值给y

注意点:按照严格规定来讲let和函数必须要定义在块级作用域的顶层。顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象,为了统一规定在所有的环境下this都是顶层对象.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值