ES5和ES6的区别

这篇讲的是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()。

你可能感兴趣的:(javascript)