什么是ES5
作為ECMAScript第五個版本(第四版因為過於復雜廢棄了),瀏覽器支持情況可看第一副圖,增加特性如下。
1. strict模式
嚴格模式,限制一些用法,'use strict';
2. Array增加方法
增加了every、some 、forEach、filter 、indexOf、lastIndexOf、isArray、map、reduce、reduceRight方法
PS: 還有其他方法 Function.prototype.bind、String.prototype.trim、Date.now
3. Object方法
什么是ES6
ECMAScript6在保證向下兼容的前提下,提供大量新特性,目前瀏覽器兼容情況如下:
ES6特性如下:
1.塊級作用域 關鍵字let, 常量const
ES6中的let命令,聲明變量,用法和var差不多,但是let是為JavaScript新增了塊級作用域,ES5中是沒有塊級作用域的,並且var有變量提升的概念,但是在let中,使用的變量一定要進行聲明;
2.對象字面量的屬性賦值簡寫(property value shorthand)
var obj = { // __proto__ __proto__: theProtoObj, // Shorthand for ‘handler: handler’ handler, // Method definitions toString() { // Super calls return "d " + super.toString(); }, // Computed (dynamic) property names [ 'prop_' + (() => 42)() ]: 42 };
3.賦值解構
let singer = { first: "Bob", last: "Dylan" }; let { first: f, last: l } = singer; // 相當於 f = "Bob", l = "Dylan" let [all, year, month, day] = /^(\d\d\d\d)-(\d\d)-(\d\d)$/.exec("2015-10-25"); let [x, y] = [1, 2, 3]; // x = 1, y = 2
4.箭頭函數 Arrow functions
(1).簡化了代碼形式,默認return表達式結果。
(2).自動綁定語義this,即定義函數時的this。如上面例子中,forEach的匿名函數參數中用到的this。