![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ES6
chenjk4
这个作者很懒,什么都没留下…
展开
-
学习记录--《深入理解ES6》之迭代器与生成器
循环的问题 var colors = ["red","green","blue"]; for(var i= 0, len = colors.length; i < len; i++){ console.log(colors[i]); } 虽然这个循环非常直观,然而当它被嵌套使用并要追踪多个变量时,情况会变得非常复杂。额外的复杂度会引发错误,而for 循环样板性也增加了自身出错的可能性,因为相似的代码会被卸载多个地方。迭代器正是用来解决此问题的。 何为迭代器 在ES5中提供了 createIter原创 2020-12-30 17:42:29 · 140 阅读 · 0 评论 -
学习记录--《深入理解ES6》之Map
ES6的Map ES6的Map类型是键值对的有序列表,而键和值都可以是任意类型。键的比较使用的是object.is(),因此你能将5与*“5”*同时作为键,因为它们类型不同。这与使用对象属性作为键的方式截然不同,因为对象的属性会被强制转换为字符串。 你可以调用set()方法并给它传递一个键与一个关联的值,来给Map添加项;此后使用键名来调用get()方法便能提取对应的值。 let map = new Map(); map.set("title","Understanding ES6"); map.set("原创 2020-12-29 14:41:14 · 115 阅读 · 0 评论 -
学习记录--《深入理解ES6》之符号与符号属性
创建符号值 符号没有字面量形式,这在JS的基本类型中独一无二的,有别于布尔类型的true 或数值类型的42 等等。你可以使用全局Symbol 函数来创建一个符号值。 let firstName = Symbol(); let person = { }; person[firstName] = "John"; console.log(person[firstName]); //"John" 此代码创建了一个符号类型的firstName变量,并将它作为person 对象的一个属性,而每次访问该属性都要使用原创 2020-12-29 13:55:36 · 162 阅读 · 0 评论 -
学习记录--《深入理解ES6》之Set
ES5中的 Set 在ES5中,开发者使用对象属性来模拟Set与Map,就像这样: let set = Object.create(null); set.foo = true; //检查属性的存在性 if (set.foo){ //一些操作 } 本例中的set 变量是一个原型为null的对象,确保在此对象上没有继承属性。使用对象的属性作为需要检查的唯一值在ES5中是很常用的方法。当一个属性被添加到set对象时,它的值也被设为true,因此条件判断语句(例如本例中的if 语句)就可以简单判断出该值是否存在原创 2020-12-28 19:53:39 · 112 阅读 · 0 评论 -
学习记录--《深入理解ES6》之解构
对象解构 对象解构语法在赋值语句的左侧使用了对象字面量。 let node = { type : "Identifier", name : "foo" }; let { type, name } = node; console.log(type); //"Identifier" console.log(name); //"foo" 如果想在变量声明之后改变它们的值 let node = { type : "Identifier", name : "foo" }, type = "Li原创 2020-12-18 11:16:01 · 175 阅读 · 0 评论 -
学习记录--《深入理解ES6》之扩展的对象功能
对象字面量语法的扩展 属性初始化器的速记法 在ES5及更早版本中,对象字面量是“键/值对”的简单集合。这意味着在属性值被初始化时可能会有些重复。 functiong createPerson(name,age){ return { name : name, age : age }; } 在ES6中,你可以使用属性初始化器的速记法来消除对象名称与本地变量重复情况。当对象的一个属性名称与本地变量名相同时,可以简单书写名称而省略冒号与值。 function createPerson(name原创 2020-12-17 16:06:55 · 136 阅读 · 0 评论 -
学习记录--《深入理解ES6》之函数(下)
箭头函数 ES6 最有意思的一个新部分就是箭头函数(arrow function)。箭头函数正如名称所示那样,使用一个“箭头”(=>)来定义,但它的行为在很多重要方面与传统的JS函数不同: 没有this、super、arguments,也没有new.target 绑定:this、super、arguments以及函数内部的new.target的值由所在的,最靠近的非箭头函数来决定。 不能被使用new调用:箭头函数没有**[[Construct]]** 方法,因此不能被用为构造函数,使用new调用箭头原创 2020-12-16 17:58:29 · 111 阅读 · 0 评论 -
学习记录--《深入理解ES6》之函数(上)
带参数默认值的函数 ES6中的参数默认值 ES6能更容易地为参数提供默认值,它使用了初始化形式,以便在参数未被正式传递进来时使用。 function makeRequest(url, timeout =2000, callback = funtcion(){}){ // 函数的剩余部分 } 此函数只要求第一个参数始终要被传递。其余两个参数则都有默认值,这使得函数体更为小巧,因为不需要再添加更多代码来检查缺失的参数值。 如果使用全部三个参数来调用makeRequest(), 那么默认值将不会被使用 //原创 2020-12-16 13:56:02 · 132 阅读 · 0 评论 -
学习记录--《深入理解ES6》之字符串与正则表达式
正则表达式y标志 在 Firefox 实现了对正则表达式 y 标志的专有扩展之后,ES6 将该实现标准化。 y 标志影 响正则表达式搜索时的粘连( sticky )属性,它表示从正则表达式的 lastIndex 属性值的 位置开始检索字符串中的匹配字符。如果在该位置没有匹配成功,那么正则表达式将停止检 索。为了明白它是如何工作的,考虑如下的代码: var text = "hello1 hello2 hello3", pattern = /hello\d\s?/, result = patte原创 2020-12-15 16:02:43 · 146 阅读 · 0 评论 -
学习记录--《深入理解ES6》之块级绑定
块级绑定 传统的var声明与其他语言的变量声明生命开始不一致,常常会令人困惑。 var声明与变量提升 使用var 关键字声明的变量,无论其实际声明位置在何处,都会被视为声明于所在函数的顶部(如果声明不在任意函数内,则视为在全局作用域的顶部)。这就是所谓的变量提升(hoisting)。 function getValue(condition){ if(condition){ var value = "blue"; return value; } else { // value 在此处可访问,值原创 2020-12-14 19:25:58 · 100 阅读 · 0 评论