推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

好程序员JavaScript分享ES6相关知识

   2023-08-03 网络整理佚名1990
核心提示:好程序员分享ES6相关知识,ES6增加的语法ES5中创建变量或者函数:存在变量提升,重复声明等特征;[size=1em][size=1em]按照原有值的结构,把原有值中的某一部分内容快速获取到(快速赋值给一个变量)。

优秀程序员分享ES6相关知识,ES6新增语法

好程序员

让&&const

[size=0.9em]let 和 [size=0.9em]var 之间的区别

变量名=变量值

使用let创建变量和使用var创建变量的区别

1.用var声明的变量会被提升,用let声明的变量不会被提升。

用let创建变量

让xxx=xxx;

使用 let 创建函数

让 xxx=(){}

创建自执行函数

;((){

})();

2.用let定义的变量不允许在同一个作用域内重复声明一个变量[size=0.9em](只要当前作用域存在这个变量,无论用var还是let声明,都会再次用let声明,报错:一个变量不能重复声明),但可以重复定义(赋值)。

设i=10;

let i=20;/ 会报错,

我=20; 重复赋值不会报错

3、暂时死区:在代码块中,在使用let命令声明变量之前,无法使用该变量。

如果属实) {

// TDZ 开始

tmp = 'abc'; // ,报错后,不会输出以下内容

.log(tmp); // ,报错后不会输出以下内容

让tmp; // TDZ 结束

.log(tmp); //

tmp = 123;

.log(tmp); // 123

//下面也会报错TDZ

.log(x); //

让x;

//作为对比,如果一个变量根本没有声明,那么使用时就不会报错。

.log(x);// ""

4. ES6语法创建的变量(let)具有块级作用域

[ES5]

全球范围

函数执行形成的私有作用域

[ES6]

除了ES5中的两个作用域外,ES6中还新增了块级作用域(我们可以将块级作用域理解为之前学过的私有作用域,私有作用域和作用域链都有一些机制)[size = 0.9em] 在 ES6 中,大多数用 {} 包裹的项称为块级作用域;

[大小=0.9em]常量

const详细知识点与let类似

const声明的常量只要声明了就必须赋值,并且变量的值是固定的,不能修改;

[size=0.9em] 注意:并不是变量的值不能改变,而是变量指向的内存地址不能改变。 对于简单类型的数据(数字、字符串、布尔值),值存储在变量指向的内存地址处,因此相当于常量。 但对于复合类型的数据(主要是对象和数组)来说,变量指向的内存地址只是一个指针,const只能保证指针是固定的。 失控。 因此,将对象声明为常量时必须非常小心。

[size=1em][size=1em]const声明的变量也有临时死区,即只能在声明的位置之后使用;

JS中创建变量的方法总结

[尺寸=1em][尺寸=1em][ES5]

var : 创建变量

:创建函数

ES5中创建变量或函数:存在变量提升、重复声明等特点;

[尺寸=1em][尺寸=1em][ES6]

· let 创建变量

const:在 ES6 中创建常量

ES6中创建的变量或常量:没有变量提升、没有重复声明、块级作用域;

类:创建一个类

:进口

ES6 中的解构赋值

[size=1em][size=1em]根据原值的结构,快速获取原值的某一部分(快速赋值给变量)。

数组解构赋值

[size=1em][size=1em]解构赋值本身就是ES6的语法规范。 使用什么关键字来声明这些变量并不重要。 如果不使用关键字声明,相当于添加自定义属性;(严格模式下必须使用关键字声明,因为不使用关键字声明的变量在严格模式下是不允许的;),如果值无法解构,那么变量的值为;

让[a,b,c]=[12,23,34];

var [d,e,f]=[35,41,63];

.log(a,b,c)//12,23,34;

.log(d,e,f)//35,41,63;

[q,w,e]=[1,2,3];//相当于添加三个属性:q,w,e值分别为1,2,3; (严格模式下会报错)

[size=1em][size=1em]多维数组的解构赋值可以让我们快速得到需要的结果

让 [a,b,c]=[[45,36],12,[23,43,[1,2[4,[8]]]]23,34];

.log(a)//[45,36]

.log(b)//12

.log(c)//[23,43,[1,2,[4,[8]]]]

//数组中不需要解构的值可以用逗号(,)打开,逗号代表打开项

让[,,,A]=[12,23,45];

.log(A)//

让 [,,B]=[12,23,45]

.log(B)//45

[size=1em][size=1em] 解构赋值中,支持扩展运算符,即[size=1em]...[size=1em]。 只要使用了扩展运算符,就相当于生成了一个新的数组或对象。 如果该值无法解构,则新生成的数组或对象为空,但扩展运算符必须放在末尾

让 [a,...c]=[12,1,4,83,34];

.log(a)//12

.log(c)//[1,4,83,34];

let [a,...b,c]=[12,1,4,83,34];//会报错,扩展运算符只能放在最后;

对象解构赋值

[size=1em][size=1em] 对象的简明表示法:

const foo = '酒吧';

const baz = {foo};

巴兹// {foo:“酒吧”}

// 相当于

const baz = {foo: foo};

[size=1em][size=1em] 解构对象和数组之间有一个重要区别。 数组的元素按顺序排列,变量的值由其位置决定; 虽然对象的属性没有顺序,但变量必须与属性具有相同的名称才能获得正确的值。

让 { foo, bar } = { foo: "aaa", bar: "bbb" };

foo //“aaa”

酒吧//“bbb”

如果变量名与属性名不一致,则必须这样写。

让 { foo: baz } = { foo: 'aaa', bar: 'bbb' };

巴兹//“aaa”

实际分配的是后者,而不是前者。

让 obj = { 第一个:'你好',最后一个:'世界' };

让 { 第一个:f,最后一个:l } = obj;

f // '你好'

l // '世界'

第一个//错误:第一个不是

如果你想使用声明的变量进行解构赋值,你必须非常小心。

// 错误的措辞

让x;

{x} = {x:1};//会报错

发生语法错误是因为引擎将 {x} 解释为代码块。 这个问题只能通过在行首不写大括号来解决,避免它被解释为代码块。

// 正确的拼写

让x;

({x} = {x: 1});

将其放在括号中可以防止将其解释为代码块。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON