這是我第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)雅的解決方案。就是一種便捷寫法,讓我們的寫的代碼更簡單,看起來也更容易理解。