ecmascript 6(es6) 目前基本成為業界標準,它的普及速度比 es5 要快很多,主要原因是現代瀏覽器對 es6 的支援相當迅速,尤其是 chrome 和 firefox 瀏覽器,已經支援 es6 中絕大多數的特性。1.不一樣的變數宣告:const和let
let表示宣告變數,而const表示宣告常量,兩者都為塊級作用域;const 宣告的變數都會被認為是常量,意思就是它的值被設定完成後就不能再修改了:var x = '全域性變數';
console.log(x); // 全域性變數
const a = 1
a = 0 //報錯
有幾個點需要注意:const student =
student.name = 'yy';// 不報錯
student = ;// 報錯
let 和 const 宣告只在最靠近的乙個塊中(花括號內)有效
當使用常量 const 宣告時,請使用大寫變數,如:capital_casing
const 在宣告時必須被賦值
2.模板字串
在es6之前,我們往往這麼處理模板字串:
通過「\」和「+」來構建模板
而對es6來說$("body").html("this demonstrates the output of html \
content to the page, including student's\
" + name + ", " + seatnumber + ", " + *** + " and so on.");
基本的字串格式化。將表示式嵌入字串中進行拼接。用${}來界定;
es6反引號(``)直接搞定;
3.箭頭函式(arrow functions)$("body").html(`this demonstrates the output of html content to the page,
including student's $, $, $ and so on.`);
es6 中,箭頭函式就是函式的一種簡寫形式,使用括號包裹引數,跟隨乙個 =>,緊接著是函式體;箭頭函式最直觀的三個特點。// es5
var add = function (a, b) ;
// 使用箭頭函式
var add = (a, b) => a + b;
// es5
[1,2,3].map((function(x)).bind(this));
// 使用箭頭函式
[1,2,3].map(x => x + 1);
細節:當你的函式有且僅有乙個引數的時候,是可以省略掉括號的。當你函式返回有且僅有乙個表示式的時候可以省略{} 和 return;4. 函式的引數預設值在es6之前,我們往往這樣定義引數的預設值:
5.spread / rest 操作符// es6之前,當未傳入引數時,text = 'default';
function printtext(text)
// es6;
function printtext(text = 'default')
printtext('hello'); // hello
printtext();// default
spread / rest 操作符指的是 ...,具體是 spread 還是 rest 需要看上下文語境。當被用於迭代器中時,它是乙個 spread 操作符:當被用於函式傳參時,是乙個 rest 操作符:當被用於函式傳參時,是乙個 rest 操作符:function foo(x,y,z)
let arr = [1,2,3];
foo(...arr); // 1 2 3
6.二進位制和八進位制字面量function foo(...args)
foo( 1, 2, 3, 4, 5); // [1, 2, 3, 4, 5]
es6 支援二進位制和八進位制的字面量,通過在數字前面新增 0o 或者0o 即可將其轉換為八進位制值:7.物件和陣列解構let ovalue = 0o10;
console.log(ovalue); // 8
let bvalue = 0b10; // 二進位制使用 `0b` 或者 `0b`
console.log(bvalue); // 2
8.物件超類// 物件
const student =
// 陣列
// const student = ['sam', 22, '男'];
// es5;
const name = student.name;
const age = student.age;
const *** = student.***;
console.log(name + ' --- ' + age + ' --- ' + ***);
// es6
const = student;
console.log(name + ' --- ' + age + ' --- ' + ***);
es6 允許在物件中使用 super 方法:
9.for...of 和 for...invar parent = }
var child = }
object.setprototypeof(child, parent);
child.foo(); // hello from the parent
// hello from the child
for...of 用於遍歷乙個迭代器,如陣列:
for...in 用來遍歷物件中的屬性:let letter = ['a', 'b', 'c'];
letter.size = 3;
for (let letter of letters)
// 結果: a, b, c
10.es6中的類let stu = ['sam', '22', '男'];
stu.size = 3;
for (let stu in stus)
// 結果: sam, 22, 男
es6 中支援 class 語法,不過,es6的class不是新的物件繼承模型,它只是原型鏈的語法糖表現形式。
類中的繼承和超集:class student
study()
static read() }
console.log(typeof student); // function
let stu = new student(); // "i'm a student."
stu.study(); // "study!"
stu.read(); // "reading now."
class phone }
class mi extends phone }
let mi8 = new mi();
extends 允許乙個子類繼承父類,需要注意的是,子類的constructor 函式中需要執行 super() 函式。當然,你也可以在子類方法中呼叫父類的方法,如super.parentmethodname()。
在 這裡 閱讀更多關於類的介紹。
有幾點值得注意的是:ES6中常用的10個新特性講解
ecmascript 6 es6 目前基本成為業界標準,它的普及速度比 es5 要快很多,主要原因是現代瀏覽器對 es6 的支援相當迅速,尤其是 chrome 和 firefox 瀏覽器,已經支援 es6 中絕大多數的特性。es61.不一樣的變數宣告 const和let var x 全域性變數 co...
ES6中常用的10個新特性講解
ecmascript 6 es6 目前基本成為業界標準,它的普及速度比 es5 要快很多,主要原因是現代瀏覽器對 es6 的支援相當迅速,尤其是 chrome 和 firefox 瀏覽器,已經支援 es6 中絕大多數的特性。1.不一樣的變數宣告 const和letvar x 全域性變數 consol...
ES6中常用的10個新特性講解
ecmascript 6 es6 目前基本成為業界標準,它的普及速度比 es5 要快很多,主要原因是現代瀏覽器對 es6 的支援相當迅速,尤其是 chrome 和 firefox 瀏覽器,已經支援 es6 中絕大多數的特性。1.不一樣的變數宣告 const和let 在es6之前,我們往往這麼處理模板...