新聞中心
ES6,正式名稱是ECMAScript2015,但是ES6這個(gè)名稱更加簡(jiǎn)潔。ES6已經(jīng)不再是JavaScript***的標(biāo)準(zhǔn),但是它已經(jīng)廣泛用于編程實(shí)踐中。如果你還沒(méi)用過(guò)ES6,現(xiàn)在還不算太晚...

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),承德縣企業(yè)網(wǎng)站建設(shè),承德縣品牌網(wǎng)站建設(shè),網(wǎng)站定制,承德縣網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,承德縣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
下面是10個(gè)ES6突出特性,排名不分先后:
- 函數(shù)參數(shù)默認(rèn)值
- 模板字符串
- 多行字符串
- 解構(gòu)賦值
- 對(duì)象屬性簡(jiǎn)寫(xiě)
- 箭頭函數(shù)
- Promise
- Let與Const
- 類(lèi)
- 模塊化
1. 函數(shù)參數(shù)默認(rèn)值
不使用ES6
為函數(shù)的參數(shù)設(shè)置默認(rèn)值:
- function foo(height, color)
- {
- var height = height || 50;
- var color = color || 'red';
- //...
- }
這樣寫(xiě)一般沒(méi)問(wèn)題,但是,當(dāng)參數(shù)的布爾值為false時(shí),是會(huì)出事情的!比如,我們這樣調(diào)用foo函數(shù):
- foo(0, "", "")
因?yàn)?的布爾值為false,這樣height的取值將是50。同理color的取值為'red'。
使用ES6
- function foo(height = 50, color = 'red')
- {
- // ...
- }
2. 模板字符串
不使用ES6
使用+號(hào)將變量拼接為字符串:
- var name = 'Your name is ' + first + ' ' + last + '.'
使用ES6
將變量放在大括號(hào)之中:
- var name = `Your name is ${first} ${last}.`
ES6的寫(xiě)法更加簡(jiǎn)潔、直觀。
3. 多行字符串
不使用ES6
使用"nt"將多行字符串拼接起來(lái):
- var roadPoem = 'Then took the other, as just as fair,\n\t'
- + 'And having perhaps the better claim\n\t'
- + 'Because it was grassy and wanted wear,\n\t'
- + 'Though as for that the passing there\n\t'
- + 'Had worn them really about the same,\n\t'
使用ES6
將多行字符串放在反引號(hào)``之間就好了:
- var roadPoem = `Then took the other, as just as fair,
- And having perhaps the better claim
- Because it was grassy and wanted wear,
- Though as for that the passing there
- Had worn them really about the same,`
4. 解構(gòu)賦值
不使用ES6
當(dāng)需要獲取某個(gè)對(duì)象的屬性值時(shí),需要單獨(dú)獲?。?/p>
- var data = $('body').data(); // data有house和mouse屬性
- var house = data.house;
- var mouse = data.mouse;
使用ES6
一次性獲取對(duì)象的子屬性:
- var { house, mouse} = $('body').data()
對(duì)于數(shù)組也是一樣的:
- var [col1, col2] = $('.column');
5. 對(duì)象屬性簡(jiǎn)寫(xiě)
不使用ES6
對(duì)象中必須包含屬性和值,顯得非常多余:
- var bar = 'bar';
- var foo = function ()
- {
- // ...
- }
- var baz = {
- bar: bar,
- foo: foo
- };
使用ES6
對(duì)象中直接寫(xiě)變量,非常簡(jiǎn)單:
- var bar = 'bar';
- var foo = function ()
- {
- // ...
- }
- var baz = { bar, foo };
6. 箭頭函數(shù)
不使用ES6
普通函數(shù)體內(nèi)的this,指向調(diào)用時(shí)所在的對(duì)象。
- function foo()
- {
- console.log(this.id);
- }
- var id = 1;
- foo(); // 輸出1
- foo.call({ id: 2 }); // 輸出2
使用ES6
箭頭函數(shù)體內(nèi)的this,就是定義時(shí)所在的對(duì)象,而不是調(diào)用時(shí)所在的對(duì)象。
- var foo = () => {
- console.log(this.id);
- }
- var id = 1;
- foo(); // 輸出1
- foo.call({ id: 2 }); // 輸出1
7. Promise
不使用ES6
嵌套兩個(gè)setTimeout回調(diào)函數(shù):
- setTimeout(function()
- {
- console.log('Hello'); // 1秒后輸出"Hello"
- setTimeout(function()
- {
- console.log('Fundebug'); // 2秒后輸出"Fundebug"
- }, 1000);
- }, 1000);
使用ES6
使用兩個(gè)then是異步編程串行化,避免了回調(diào)地獄:
- var wait1000 = new Promise(function(resolve, reject)
- {
- setTimeout(resolve, 1000);
- });
- wait1000
- .then(function()
- {
- console.log("Hello"); // 1秒后輸出"Hello"
- return wait1000;
- })
- .then(function()
- {
- console.log("Fundebug"); // 2秒后輸出"Fundebug"
- });
8. Let與Const
使用Var
var定義的變量未函數(shù)級(jí)作用域:
- {
- var a = 10;
- }
- console.log(a); // 輸出10
使用let與const
let定義的變量為塊級(jí)作用域,因此會(huì)報(bào)錯(cuò):(如果你希望實(shí)時(shí)監(jiān)控JavaScript應(yīng)用的錯(cuò)誤,歡迎免費(fèi)使用Fundebug)
- {
- let a = 10;
- }
- console.log(a); // 報(bào)錯(cuò)“ReferenceError: a is not defined”
const與let一樣,也是塊級(jí)作用域。
9. 類(lèi)
不使用ES6
使用構(gòu)造函數(shù)創(chuàng)建對(duì)象:
- function Point(x, y)
- {
- this.x = x;
- this.y = y;
- this.add = function()
- {
- return this.x + this.y;
- };
- }
- var p = new Point(1, 2);
- console.log(p.add()); // 輸出3
使用ES6
使用Class定義類(lèi),更加規(guī)范,且你能夠繼承:
- class Point
- {
- constructor(x, y)
- {
- this.x = x;
- this.y = y;
- }
- add()
- {
- return this.x + this.y;
- }
- }
- var p = new Point(1, 2);
- console.log(p.add()); // 輸出3
10. 模塊化
JavaScript一直沒(méi)有官方的模塊化解決方案,開(kāi)發(fā)者在實(shí)踐中主要采用CommonJS和AMD規(guī)范。而ES6制定了模塊(Module)功能。
不使用ES6
Node.js采用CommenJS規(guī)范實(shí)現(xiàn)了模塊化,而前端也可以采用,只是在部署時(shí)需要使用Browserify等工具打包。這里不妨介紹一下CommenJS規(guī)范。
module.js中使用module.exports導(dǎo)出port變量和getAccounts函數(shù):
- module.exports = {
- port: 3000,
- getAccounts: function() {
- ...
- }
- }
main.js中使用require導(dǎo)入module.js:
- var service = require('module.js')
- console.log(service.port) // 輸出3000
使用ES6
ES6中使用export與import關(guān)鍵詞實(shí)現(xiàn)模塊化。
module.js中使用export導(dǎo)出port變量和getAccounts函數(shù):
- export var port = 3000
- export function getAccounts(url) {
- ...
- }
main.js中使用import導(dǎo)入module.js,可以指定需要導(dǎo)入的變量:
- import {port, getAccounts} from 'module'
- console.log(port) // 輸出3000
也可以將全部變量導(dǎo)入:
- import * as service from 'module'
- console.log(service.port) // 3000
名稱欄目:關(guān)于ES6的10個(gè)突出特性
文章網(wǎng)址:http://www.dlmjj.cn/article/dhsjjsc.html


咨詢
建站咨詢
