摘要:JS的对象本身就是个键值结构,ES6为什么还需要加Map呢,它与普通的JS对象有何区别?一、Map1. Map构造器先看Map的简单用法// 字符串作为key, 和JS对象类似var map = new Map()// setmap.set('name', 'John')map.set('age',...
阅读全文
摘要:ES6里加入了一个新数据解构Set,和Java的Set一样,它里面不存放重复的元素。Set实现为一个类,使用时需要先new。var s1 = new Set()s1.add(1)s1.add(2)s1.add(3)s1.add(1)var s2 = new Set()s2.add('a')s2.ad...
阅读全文
摘要:很多语言中都有块级作用域,但JS没有,它使用var声明变量,以function来划分作用域,大括号“{}” 却限定不了var的作用域。用var声明的变量具有变量提升(declaration hoisting)的效果。ES6里增加了一个let,可以在{}, if, for里声明。用法同var,但作用域...
阅读全文
摘要:这是由小习发的一个问题引起的讨论,结束后大家各自加深了多parseFloat的理解。如下16进制数0x10使用parseFloat转成数字,结果为0。潜意识期望的结果是16。有人说脑残,16进制数为什么要用parseFloat,因为16进制不分int和float(那是10进制的事)。的确是这样,实际...
阅读全文
摘要:在这之前我们比较值使用两等号 “==” 或 三等号“===”, 三等号更加严格,只要比较两方类型不同立即返回false。另外,有且只有一个值不和自己相等,它是NaN现在ES6又加了一个Object.is,让比较运算的江湖更加混乱。多数情况下Object.is等价于“===”,如下1 === 1 //...
阅读全文
摘要:我们知道JS函数内部有个arguments对象,可以拿到全部实参。现在ES6给我们带来了一个新的对象,可以拿到除开始参数外的参数,即剩余参数(废话好多 O(∩_∩)O~)。这个新的对象和arguments不一样,它是程序员自定义的一个普通标识符,只是需要在前面加上三个点:...function fu...
阅读全文
摘要:语言更新时每一个新增的特性都是从千百万开发者需求里提取过来的,规范采用后能减少程序员的痛苦,带来便捷。我们经常会这么写function calc(x, y) { x = x || 0; y = y || 0; // to do with x, y // return x/y}...
阅读全文