ECS6新语法学习(一) 作者: Asser 时间: 2016-11-14 分类: javascript 阅读:次 ### ECS6中新引入块级作用域声明方法let 和 const > 即使用该方法声明的变量只在当前的块级作用域({}中)有效,使用此方式声明变量可以有效的防止全局变量冲突的情况。在此情况下也可以取代常用的匿名函数写法 //使用var 声明变量i var arr = []; for (var i = 0; i < 10; i++) { arr[i] = function () { console.log(i); } }; arr[6](); // 输出10 // 使用let 声明变量i var arr = []; for (let i = 0; i < 10; i++) { arr[i] = function() { console.log(i); } } arr[6](); //输出6 > ECS6中的新写法,=>和>>>, => 为arrow function ### => 为arrow function,(x) => x + 6相当于 function(x) { return x + 6 } > 箭头函数中没有arguments对象,箭头函数的this也始终指向定义时所在的对象而不是使用时的对象. ### 关于数组和对象的解构赋值,个人认为有点类似于python var [a, b] = [1, 2] console.log(a) // a = 1 console.,log(b) // b = 2 //数组解构 function example () { return { "aaa" : 1, "bbb" : 2 } } var {aaa, bbb} = example(); console.log(aaa) // 1 console.log(bbb) // 2 //对象解构 ### 关于数组遍历,使用for..of.. 在原有的ECS5中有forEach但是forEach不支持break,使用for..of..可以完美支持break var a = [111,222,333] for (let test of a) { console.log(test); } ### 测试时发现对象貌似没有Iterator接口,所以在遍历是可以采用如下方法。 var map = new Map() map.set("aaa", 11); map.set("bbb", 22); for(let [key, value] of map) { console.log(key + "is" + value); } ### 模板字符串`的使用。 > 在ECS6中支持将多行字符串写在`中,被称作模板字符串,可以完美保留空格,缩进,转行等。假如在模板字符串中需要引用变量,可以在${}中写入 var name = "Asser"; var txt = `User's name is ${name}, and this is a test`; ### 数组新功能 ####使用Array.of()建立新数组 > 在ECS5中 Array(); // [] Array(3); //[, , ] Array(1,2,3)[1, 2, 3] > 又上可见 输入的值不同,创建的数组都不同,Array()函数只有在参数是2个及以上的时候才能创建数组 > 使用Array.of() Array.of(1) // [1] #### 使用includes查找数组中是否存在某一元素,返回值为布尔值.此函数可以传第二个参数,选择开始查询的位置,默认为0,假如为负数则表示为从倒数的第x个位置开始查询。 [1, 2, 3].includes(1) // true [1, 2, 3].includes(1, 1) // false [1, 2, 3].includes(3, -1) // true ###未完待续 标签: none 相关文章推荐 上一篇: redis数据库管理 下一篇: 代码规范