最近我在看ES6的时候有人提到了语法糖。其中说到语法糖其实就是ES6中的一些非破坏性更新。这类新语法能做的事情其实用ES5也可以做,只是会稍微复杂一些。

看完这样的解释,我还是不太明白到底语法糖是什么?于是我查了百度百科,维基百科等终于弄清楚了它的本质。本文正是基于此简单的说明一下我对语法糖的理解。

下面是来自维基百科的解释:

语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·兰丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。语法糖让程序更加简洁,有更高的可读性。

看到上面这个解释,我相信你肯定就明白了。还是维基百科解释的清楚。

再看下面列举的例子:

在C语言里用a[i]表示*(a+i),用a[i][j]表示*(*(a+i)+j),由此可见语法糖不是“现代语言”独有,这种写法简洁明了,容易被人理解。

最常见的就是for循环和while循环。以及下面这种:

a += 10;
//等价于
a = a + 10;

到这里你就明白了,其实语法糖听起来难,等你弄清楚了一点也不难。

日常的编程中还有很多语法糖的例子。例如:面向过程和面向对象。

input.map(item => item + 1);
//等价于
input.map(function (item) {
  return item + 1;
});

除了语法糖只要,还有语法盐,语法糖精等一些概念。至于它们分别代表什么意思,你上维基百科自己查去吧。