ES6优缺点
看了一篇ES6語(yǔ)法示例,覺得還可以
here
ES6是新一版的標(biāo)準(zhǔn),對(duì)語(yǔ)言有擴(kuò)展,添加了新的屬性與方法。這一標(biāo)準(zhǔn)雖然現(xiàn)在還要用babel來(lái)做瀏覽器支持(將ES6編譯成ES5才能被瀏覽器支持),但是未來(lái)瀏覽器會(huì)逐漸對(duì)其有原生的支持。到時(shí)候JS語(yǔ)法會(huì)發(fā)生更新,我們可以使用更簡(jiǎn)單的方式編寫代碼,使得編程更容易。
語(yǔ)法糖:糖衣語(yǔ)法,并不改變語(yǔ)言的功能,只是使編程更簡(jiǎn)單。比如C語(yǔ)言里用a[i]表示*(a+i)
ES6就是用了較多語(yǔ)法糖,這也就意味著,ES6的一些新特性并不是真的“新”,只是試圖簡(jiǎn)化語(yǔ)法而已。
下面是ES6的一些新特性/優(yōu)點(diǎn):
1、類的封裝
class Project {constructor(name) { //構(gòu)造方法this.name = name;}start() { //成員方法,可以不用function聲明return "Project " + this.name + " starting";} }var project = new Project("Journal"); project.start(); // "Project Journal starting"這個(gè)類中定義的所有方法都被加入這個(gè)類的原型prototype中
2、繼承
現(xiàn)有的JS語(yǔ)法中,繼承是通過(guò)prototype實(shí)現(xiàn)的
ES6中:
class WebProject extends Project {constructor(name, technologies) {super(name);this.technologies = technologies;}info() {return this.name + " uses " + arrayToString(this.technology);} }function arrayToString(param) {// ... some implementation }var webJournal = new WebProject("FrontEnd Journal", "javascript"); webJournal.start(); // "FrontEnd Journal starting" webJournal.info(); // "FrontEnd Journal uses javascript"3、模塊化module
在js中,為了實(shí)現(xiàn)模塊化編程,可以使用插件工具seajs等,seajs符合CMD規(guī)范,CMD規(guī)范是在commonJS(服務(wù)端模塊化規(guī)范)基礎(chǔ)上的
ES6中:
// point.js module "point" {export class Point {constructor (x, y) {public x = x;public y = y;}} }// myapp.js //聲明引用的模塊 module point from "/point.js"; //這里可以看出,盡管聲明了引用的模塊,還是可以通過(guò)指定需要的部分進(jìn)行導(dǎo)入 import Point from "point";var origin = new Point(0, 0); console.log(origin);4、let和const
for (let i=0;i<2;i++)console.log(i);//輸出: 0,1 console.log(i);//輸出:undefined,嚴(yán)格模式下會(huì)報(bào)錯(cuò)?
用let聲明的變量只在代碼塊中可見
var是 函數(shù)作用域,而let是 塊級(jí)作用域
?
const是創(chuàng)建常量,一旦被創(chuàng)建,值就不可改變
?
還有一些其他特性
一篇很好的ES6介紹
?
很多人說(shuō)ES6很好用,都會(huì)覺得“早這樣該多好”
它的缺點(diǎn)就是 瀏覽器還沒(méi)有完全支持
轉(zhuǎn)載于:https://www.cnblogs.com/dll-ft/p/5813684.html
總結(jié)
- 上一篇: svn update -r m path
- 下一篇: 支持向量机libsvm实战入门