大学时没选修编译原理这门课,不知道什么是语法糖,最近看React的官方文档才接触语法糖的概念,简单查了下资料记录下,以下是来自百度百科的解释:
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
简单理解就是在不改变其功能的情况下,通过改变代码的写法,让代码更具有可读性,更容易理解,就相当于汉语里的成语。
即,用更简练的言语表达较复杂的含义。在得到广泛接受的情况之下,可以提升交流的效率。
例如以下在React中的两种写法,这两种代码的作用是完全相同的:
这种是原始JavaScript的写法
const element = React.createElement(
'span',
{className: 'qc'},
'Hello, world!'
);
下面这种写法是JSX的写法,也就是简化后的代码,下面这种写法是上面那种语法的语法糖。
const element = (
<span className="qc">
Hello, world!
<span/>
);
React官方的文档是这样描述的, JSX 仅仅只是React.createElement(component, props, ...children)
函数的语法糖。
JSX是一种JavaScript的语法扩展,运用于React架构中,其格式比较像是模版语言,但事实上完全是在JavaScript内部实现的。元素是构成React应用的最小单位,JSX就是用来声明React当中的元素,React使用JSX来描述用户界面。
其他例子还有:在 C 语言里用 a[i] 表示 *(a+i),用 a[i][j] 表示 *(*(a+i)+j),由此可见语法糖不是“现代语言”独有,这种写法简洁明了,易于理解。
对于机器语言,任何比他高级的语言都是语法糖,比如汇编语言,高级语言。
对于汇编语言,任何比他高级的语言都是语法糖,比如高级语言。
对于面向过程的语言,面向对象的语言都是语法糖。
参考文献:
1、语法糖_百度百科