![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ES6
文章平均质量分 93
LIZHUOLONG1
这个作者很懒,什么都没留下…
展开
-
Iterator 和 for...of 循环
由于 Iterator 只是把接口规格加到数据结构之上,所以,遍历器与它所遍历的那个数据结构,实际上是分开的,完全可以写出没有对应数据结构的遍历器对象,或者说用遍历器对象模拟出数据结构。,它是一个表达式,返回Symbol对象的iterator属性,这是一个预定义好的、类型为 Symbol 的特殊值,所以要放在方括号内(参见《Symbol》一章)。这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map的成员是对象。也就是说,遍历器对象本质上,就是一个指针对象。原创 2023-10-23 10:40:34 · 175 阅读 · 0 评论 -
14、Set 和 Map 数据结构
keys方法、values方法、entries方法返回的都是遍历器对象(详见《Iterator 对象》一章)。由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致。需要特别指出的是,Set的遍历顺序就是插入顺序。Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。它类似于数组,但是成员的。上面代码中,例一和例二都是Set函数接受数组作为参数,例三是接受。Set 结构的实例有四个遍历方法,可以用于遍历成员。原创 2023-10-21 11:49:30 · 245 阅读 · 0 评论 -
函数的扩展
除了简洁,ES6 的写法还有两个好处:首先,阅读代码的人,可以立刻意识到哪些参数是可以省略的,不用查看函数体或文档;其次,有利于将来的代码优化,即使未来的版本在对外接口中,彻底拿掉这个参数,也不会导致以前的代码无法运行。另外,一个容易忽略的地方是,参数默认值不是传值的,而是每次都重新计算默认值表达式的值。可以看到,ES6 的写法比 ES5 简洁许多,而且非常自然。ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。原创 2023-10-18 22:01:37 · 129 阅读 · 0 评论 -
十、对象的拓展2
解构赋值必须是最后一个参数,否则会报错。let {// 句法错误 let {// 句法错误————如果用户自定义的属性,放在扩展运算符后面,则扩展运算符内部的同名属性会被覆盖掉。// 等同于 let aWithOverrides = {// 等同于 let x = 1 , y = 2 , aWithOverrides = {// 等同于 let aWithOverrides = Object . assign({} , a , {上面代码中,a对象的x属性和y。原创 2022-09-06 21:00:38 · 409 阅读 · 0 评论 -
十、对象的拓展1
解构赋值必须是最后一个参数,否则会报错。let {// 句法错误 let {// 句法错误————如果用户自定义的属性,放在扩展运算符后面,则扩展运算符内部的同名属性会被覆盖掉。// 等同于 let aWithOverrides = {// 等同于 let x = 1 , y = 2 , aWithOverrides = {// 等同于 let aWithOverrides = Object . assign({} , a , {上面代码中,a对象的x属性和y。原创 2022-09-06 20:59:52 · 340 阅读 · 0 评论 -
九、数组的扩展(扩展运算符)
其他都保持不变。原创 2022-08-28 22:42:32 · 1635 阅读 · 0 评论 -
八、函数的拓展----
ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。上面代码检查函数的参数有没有赋值,如果没有,则指定默认值为。这种写法的缺点在于,如果参数赋值了,但是对应的布尔值为,则该赋值不起作用。就像上面代码的最后一行,参数等于空字符,结果被改为默认值。为了避免这个问题,通常需要先判断一下参数是否被赋值,如果没有,再等于默认值。ES6 允许为函数的参数设置默认值,即 直接写在参数定义的后面。————可以看到,ES6 的写法比 ES5 简洁许多,而且非常自然。下面是另一个例子。除了简洁,ES6原创 2022-08-24 12:59:31 · 20 阅读 · 0 评论 -
四、字符串的拓展……
或者。原创 2022-08-20 16:09:29 · 77 阅读 · 0 评论 -
三、变量的解构赋值
也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者(变量),而不是前者(同名属性)。foo属性不是obj1自身的属性,而是继承自obj2的属性,解构赋值可以取到这个属性。这实际上说明,对象的解构赋值是下面形式的简写(参见《对象的扩展》一章)。上面的语句都会报错,因为等号右边的值,要么转为对象以后不具备。对象的解构赋值,可以很方便地将现有对象的方法,赋值到某个变量。,只要等号两边的模式相同,左边的变量就会被赋予对应的值。注意,对象的解构赋值可以取到继承的属性。...原创 2022-08-18 23:29:39 · 145 阅读 · 0 评论 -
二、let 和 const 命令
这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。因为块级作用域内声明的函数类似于let,对作用域之外没有影响。命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。所以,ES6 一共有 6 种声明变量的方法。上面两种函数声明,根据 ES5 的规定都是非法的。ES5 之中,顶层对象的属性与全局变量是等价的。实际上保证的,并不是变量的值不得改动,而是。凡是在声明之前就使用这些变量,就会报错。.原创 2022-08-18 22:32:26 · 229 阅读 · 0 评论