語法糖

這是我第1篇簡書。

??語法糖(Syntactic sugar),指計(jì)算機(jī)語言中添加的某種語法,這種語法對(duì)語言的功能并沒有影響,但是更方便程序員使用。通常來說使用語法糖能夠增加程序的可讀性,從而減少程序代碼出錯(cuò)的機(jī)會(huì)。

之所以叫語法糖,不只是因?yàn)榧犹呛蟮拇a功能與加糖前保持一致,更重要的是,糖在不改變其所在位置的語法結(jié)構(gòu)的前提下,實(shí)現(xiàn)了運(yùn)行時(shí)等價(jià)??梢院唵卫斫鉃椋犹呛蟮拇a編譯后跟加糖前一模一樣。所以需要好好掌握 ES6 。
這里我舉三個(gè)重要的例子:
1.最基本的,for循環(huán)就是一個(gè)語法糖:

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

而這個(gè)實(shí)際上跟while沒啥區(qū)別:

var i=0;
while (i < 5){
    ...
    i++;
}

2.js的map()方法

input.map(item => item + 1);
(map的作用就是“映射”,原數(shù)組被“映射”成對(duì)應(yīng)新數(shù)組)
意思是:input.map(function (item) {
  return item + 1;
});

3.vue中,在某些場(chǎng)景中,我們可能需要對(duì)一個(gè) prop 進(jìn)行「雙向綁定」,原先刪除掉.sync 修飾符(因?yàn)檫@種雙向綁定的機(jī)制,破壞了單向數(shù)據(jù)流(one-way data flow)的設(shè)計(jì)),后又引入.sync 修飾符(做出了改進(jìn),將子組件影響父組件狀態(tài)的代碼,能夠和單向數(shù)據(jù)流保持一致,以及變得更加清晰明確。),但是這次只是原有語法的語法糖包裝而成,其背后實(shí)現(xiàn)原理是,在組件上自動(dòng)擴(kuò)充一個(gè)額外的 v-on監(jiān)聽器:

<comp v-bind:foo.sync="bar"></comp>

會(huì)被擴(kuò)充為:

<comp :foo="bar" @update:foo="val => bar=val"></comp>

對(duì)于子組件,如果想要更新 foo 的值,則需要顯式地觸發(fā)一個(gè)事件,而不是直接修改 prop:

this.$emit('update:foo', newValue)

簡單說,語法糖就是為了避免coder出現(xiàn)錯(cuò)誤并提高效率的語法層面的一種優(yōu)雅的解決方案。就是一種便捷寫法,讓我們的寫的代碼更簡單,看起來也更容易理解。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容