1. 程式人生 > >ECMA Script 6_

ECMA Script 6_

ECMAScript 6

ECMA 組織 前身是 歐洲計算機制造商協會

指定和釋出指令碼語言規範,標準在每年的 6 月份正式釋出一次,作為當年的正式版本

這樣一來,就不需要以前的版本號了,只要用年份標記就可以了.

ES6 ES6 既是一個歷史名詞,也是一個泛指“下一代 JavaScript 語言”,

含義是 5.1 版以後的 JavaScript 的下一代標準,涵蓋了 ES2015、ES2016、ES2017 等等,

而 ES2015 則是正式名稱,特指該年釋出的正式版本的語言標準

一種新的語法從提案到變成正式標準,需要經歷五個階段。每個階段的變動都需要由 TC39 委員會批准。

Stage 0 - Strawman(展示階段)
Stage 1 - Proposal(徵求意見階段)
Stage 2 - Draft(草案階段)        到這一階段,差不多肯定是要包裹在以後的標準裡面的
Stage 3 - Candidate(候選人階段)
Stage 4 - Finished(定案階段)

js 包含三個部分

  • ECMAScript         新功能的開發,語法的簡化,效能優化

2009年釋出了 ES5.1,並且成為 ISO 國際標準(ISO/IEC 16262:2011)

2015年6月 ES6       

還在實現中ing, 從開始 制定 到 最後 釋出,正式通過,成為國際標準,整整用了 15 年

目標: 是使得 JavaScript 語言可以用來編寫複雜的大型應用程式,成為企業級開發語言

2016年ES7(變化不大,很多草案待實現)

2017年ES8

2018年ES9

擴充套件瀏覽器端

  • BOM        window
  • DOM        document

擴充套件伺服器端

Node

Node 是 JavaScript 的伺服器執行環境(runtime)。它對 ES6 的支援度更高。

除了那些預設開啟的功能,還有一些語法功能已經實現了,但是預設沒有開啟。

  • 使用下面的命令,可以檢視 Node 已經實現的 ES6 特性

 

  • 'use strict';

嚴格模式,消除 js 語法的一些不合理、不嚴謹之處,減少一些怪異現象。

當瀏覽器識別,則進入嚴格模式解析執行。不識別的瀏覽器則忽略。

  • 變數必須先宣告,在使用。
  • 禁止自定義的函式中的 this 指向 window       

預設指向 window 時,this 被賦值為 undefined

如果再函式中需要訪問 全域性時,直接用 window 就好

  • eval();    將會建立一個作用域,即不會影響全域性同名變數
  • 物件禁止出現同名屬性
  • var person = {
        name: "Tom",
        age: 22,
        
        get age (){
            return this.age;
        },
        set age (newAge){
            this.age = newAge;
        }
    };
  • JSON

是一種輕量級的資料格式。        '{"name":"Ryen Toretto", "age": 22}'    屬性名,必須雙引號包裹

用來 作為前後臺互動的資料格式        (前臺傳送請求,後臺返回響應)

  • 使用
  • var obj = {name: "Tom", age: 18};
    
    var arr = [1, 3, 5, 7];
    
    var json = JSON.stringify(obj);    // 物件 處理成 JSON 資料
    console.log(json);
    
    json = JSON.stringify(arr);    // 陣列 處理成 JSON 資料
    console.log(json);
    
    
    // 解析 JSON
    var newArr = JSON.parse(json);
    console.log(newArr);
  • ES6 新加入 Object.create(obj);

將傳入的新物件 作為 新物件 的原型物件        // var newObj = {}; newObj.__proto__ = person; return newObj;

  • 使用:
  • var newObj = Object.create(person, {
        age:{
            value: 22
        },
        sex:{
            value: "男"
        }
    });
  • ES6 對於陣列的擴充套件

var arr = [1, 6 ,8, 6, 9, 8, 5, 3, 2];

  • 輸出第一個 6 的下標索引

arr.findIndex(function(item){ item === 6; });            // 適用於 物件資料型別

等同於 arr.indexOf(6);      // 找不到返回 -1            適用於 基本資料型別

  • 輸出最後一個 6 的下標索引

arr.lastIndexOf(6);

  • 輸出元素所有元素的值和下標

arr.forEach(function(item, index){... ...});

  • 將所有元素 值+10,產生並返回這個新資料

var newArr = arr.map(function(item, index){ return item+10; });        // 不影響原陣列

  • 過濾出 原陣列 中值大於 4 的元素,作新陣列返回

var newArr = arr.filter(function(item, index){ return item>4; });        // 不影響原陣列, 將 返回值為 true 的元素組成一個新陣列

  • 輸出 陣列 各個元素的累加和

var sum = arr.reduce(function(prev, cur){ return prev+cur; }, 0);        // 第二引數,是指第一次進入,prev 的值

3

3

3

3

3

3

3

3

3

3

3

3

3