什么是語法糖?


什么是語法糖?

文章插圖
知乎問題:什么是語法糖?
我覺得語法糖(Syntactic Sugar)這個概念可以跟語言特性(Language Feature)作區分 。
語法糖,比如裝飾器的@寫法,你不用它,還是可以實現對應的功能(而且像
@馬致遠 說的可以做到運行時等價->可以理解為表達不同,而語義等價),只是說寫法繁瑣一些 。語法糖是語法(Syntax)層面的;
語言特性,比如閉包,如果語言內部沒有實現,那么用這個語言你再怎么寫也實現不了函數(這里不糾結“函數”的定義)內的自由變量 。語言特性是語義(Semantics)層面的 。
語法糖(鹽、糖精...)可以類比于自然語言中的縮寫/別稱,而語言特性類比于語義/全名 。語法糖存在的前提是對應功能的語義已經可以被實現(或者說有語言特性的支持),就像CN代表China,但首先得有China這個語義 。
語言特性像是大道,語法糖像是捷徑,而語法鹽emmm...像是黑魂里的病村 。
維基百科給的定義:
【什么是語法糖?】語法糖 (英語:Syntactic sugar)是由英國 計算機科學家彼得·蘭丁 發明的一個術語,指 計算機語言 中添加的某種語法,這種語法對語言的功能沒有影響,但是更方便程序員使用 。語法糖讓程序更加簡潔,有更高的可讀性 。
簡單說,語法糖就是改變了一種形式,這種形式讓程序的書寫更加簡潔明了
定義一個函數fn,接受參數num
寫一個Generator依次調用傳遞的參數
async函數的寫法
我們發現async函數把testGen里的*替換成 async,將 yield 替換成 await而已 。所以說async/await是generator的語法糖
原文: https://mp.weixin.qq.com/s/RmslOGB6gLUHNFqY5ElQRA
下一篇:JS版數據結構-棧

    推薦閱讀