这篇讲的是ES5和ES6的区别,都是一些常见的内容,仅供自己学习所用,不定期更新。
1、var 和 const、let
ES5:var存在变量提升。
ES6:let和const不存在变量提升。
推荐:使用let和const代替var。
2、for...in 和 for...of
ES5:for...in,循环的是key,手动给对象添加属性后,可以遍历到新属性。
ES6:for...of,循环的是value,手动给对象添加属性后,不可以遍历到新属性。
let a = [11, 22];
for(i in a) { console.log(i); }
// 0 遍历key
// 1
for(i of a) { console.log(i); }
// 11 遍历value
// 22
// 添加属性
a.a = 333;
for(i in a) { console.log(i); }
// 0 遍历key
// 1
// a
for(i of a) { console.log(i); }
// 11 遍历value
// 22
推荐:循环对象属性用for...in(因为对象是无序的);遍历数组用for...of。
3、Number.isFinite(),Number.isNaN()和isFinite(),isNaN()的区别
ES5:isNaN(),isFinite(),这两个方法先调用Number()将非数值的值转为数值,再进行判断。
ES6:Number.isNaN(),Number.isFinite(),这两个方法直接进行判断。
Number.isFinite()对于非数值一律返回false,Number.isNaN()只有对于NaN才返回true,非NaN一律返回false。
isFinite("25"); // true
Number.isFinite("25"); // false
isNaN("NaN"); // true
Number.isNaN("NaN"); // false
4、Number.parseInt(),Number.parseFloat()和parseInt(),parseFloat()
ES5:parseInt(),parseFloat()
ES6:Number.parseInt(),Number.parseFloat()
ES6将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变。这样做的目的,是逐步减少全局性方法,使得语言逐步模块化。
推荐:使用Number.parseInt()和Number.parseFloat()代替parseInt()和parseFloat()。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。