微信小程序 筆記13 ES6語法

目錄

一些歷史

ECMAScript和JavaScript

ES6與ECMAScript2015的關係

ES6語法

定義變量的新關鍵字

let

const

函數

默認參數

箭頭函數

Promise風格的調用


一些歷史

ECMAScript和JavaScript

ECMAScript 和 JavaScript 的關係是,前者是後者的規格,後者是前者的一種實現(另外的 ECMAScript 方言還有 Jscript 和 ActionScript)。日常場合,這兩個詞是可以互換的。

ES6與ECMAScript2015的關係

ES6既是一個歷史名詞,也是一個泛指,含義是5.1版以後的JavaScript的下一代標準,涵蓋了ES2015、ES2016、ES2017等等,而ES2015則是正式名稱,特指該年發佈的正式版本的語言標準。

總的來說,ES6是ECMAScript6的簡寫,ECMAScript是JavaScript的標準,ECMAScript 6泛指“下一代JavaScript語言”,具體每年發佈的都有自己的專屬名稱,比如2015年發佈的則爲ESMAScript 2015。目前說的 ES6 語法,一般值得都是ESMAScript2015版。

ES6語法

定義變量的新關鍵字

let

let跟var一樣,也是用來定義變量,但是他比var更加的安全,體現在以下兩點:

  1. 不會出現變量提升的情況
  2. 只在當前代碼塊內有效

不出現變量提升的意思就是在定義在使用之後會報錯。

但是注意小程序中不能真正解析ES6語法,他只是藉助了第三方工具將ES6語法轉成ES5語法運行的,在底層也是用var來代替let的,所以依然會發生變量提升。

只在塊內有效:

for(var i = 0;i < 5;i++)
{
    console.log(i)
}
console.log(i)

這樣寫在塊外面也會輸出i的值,這顯然是不合理的。那麼如果使用let:

for(let i = 0;i < 5;i++)
{
    console.log(i)
}
console.log(i)

這樣在塊外面,會輸出undefined。

const

const是用來定義常量的,常量是一旦定義好了以後,就不能夠再修改了。

const只是用來限制指向的內存地址不能改變,但是如果這個內存地址上的數據改變了,是可以的。或者說得直白一點,就是指向的如果是一個可變的容器,容器中的數據改變了,那麼是允許的。比如以下代碼:

const mylist = [1,2,3];
mylist.push(4);
console.log(mylist);

輸出爲[1,2,3,4]

函數

默認參數

function fetch(url,method="get"){
// 發送網絡請求案例
    console.log(url);
    console.log(method);
}

以後我們在使用fetch函數的時候,可以不傳method參數,他會默認使用get。

注意:定義默認參數的時候,默認參數必須要在非默認參數的後面。

箭頭函數

有時候,函數作爲一個參數變量傳進去的時候,爲了簡化他的寫法,我們可以使用箭頭函數來實現。

原來的代碼:

wx.request({
    url: "http://www.baidu.com/",
    success: function(res){
        // 做一些事情
    }
});

 使用箭頭函數:

wx.request({
    url: 'http://www.baidu.com/',
    success: res => {
        //做一些事情
    }
});

箭頭函數的語法是

(參數1,參數2) => {代碼塊}

如果只有一個參數,可以不使用圓括號

a => a+1

另外,如果只有一行代碼,那麼可以不用花括號。

Promise風格的調用

const p = new Promise(function(resolve,reject){
// 如果執行以下代碼,那麼會執行下面的then函數
    setTimeout(() => {
        resolve("請求成功");
    },1000);
    // 如果執行以下代碼,那麼會執行下面的catch函數
    setTimeout(() => {
        reject("請求失敗")
    },1000);
    // 如果以上兩個代碼都執行,那麼只會調用下面的then方法,因爲resolve的調用在前面。
});
p.then((res) => {
        console.log(res);
    }).catch((error) => {
        console.log(error);
    });

兩個函數只能調用一個。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章