js之语法糖
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
举个例子:在C语言里用a[i]表示*(a+i),用a[i][j]表示*(*(a+i)+j),由此可见语法糖不是“现代语言”独有,这种写法简洁明了,容易被人理解。
实际上从面向过程到面向对象也是一种语法糖,C语言可以通过它的指针、类型转换,结构体实现面向对象的编程风格,但是C++更进一步的推广了这种风格,更加易用,不过到了C#把OO的风格发挥得淋漓尽致。OO的编程风格对于面向过程来说是不是一种语法糖呢?如果生硬地照此理解,只有计算机硬件指令才不算语法糖,而其他一切利用编译器、汇编器将代码抽象,和自然语言更相近的手段都算语法糖。
很多编程思想,编程理论层出不穷,当然,对于学习来说我们是要抓住技术的核心,但对于工程来说如何提高工程质量,如何提高工程效率也是我们要关注的,既然这些语法糖能辅助我们以更好的方式编写代码为什么要“抵制“呢?
语法糖和其他编程思想一样重要,什么duck type,人本接口,最小接口,约定优于配置,广义来讲都是一些思想上的“语法糖“。
不过也并不是没有反对的声音,这其中就有图灵奖的第一个获得者: Alan Perlis。.net从2.0到3.0到3.5底层CLR并没有做更新,没有添加任何新的IL指令,所以C#从2.0到3.0中所有的特性都是语法糖,就算从1.0到2.0,也只有一个泛型不是语法糖,其余的新特性也都是如此,但是每一次C#发布新特性的时候我们不得不为之而鼓舞,为之而喝彩。新的语法可以酿造更好的编程风格,一些难以实现的方面也轻而易举了。
需要声明的是“语法糖”这个词绝非贬义词,它可以给我们带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率,在性能上也不会带来损失。
很多编程思想,编程理论层出不穷,当然,对于学习来说我们是要抓住技术的核心,但对于工程来说如何提高工程质量,如何提高工程效率也是我们要关注的,既然这些语法糖能辅助我们以更好的方式编写代码为什么要“抵制“呢?
语法糖和其他编程思想一样重要,什么duck type,人本接口,最小接口,约定优于配置,广义来讲都是一些思想上的“语法糖“。
不过也并不是没有反对的声音,这其中就有图灵奖的第一个获得者: Alan Perlis。.net从2.0到3.0到3.5底层CLR并没有做更新,没有添加任何新的IL指令,所以C#从2.0到3.0中所有的特性都是语法糖,就算从1.0到2.0,也只有一个泛型不是语法糖,其余的新特性也都是如此,但是每一次C#发布新特性的时候我们不得不为之而鼓舞,为之而喝彩。新的语法可以酿造更好的编程风格,一些难以实现的方面也轻而易举了。
需要声明的是“语法糖”这个词绝非贬义词,它可以给我们带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率,在性能上也不会带来损失。
- JavaScript(一)js 简介 基础语法 数据类型 变量
- js基础语法(2)
- js正则表达式语法
- JS中的Var语法
- [置顶] Markdown 中的flow语法 flowchart.js 的基础教程
- ExtJs4 笔记(2) ExtJs对js基本语法扩展支持
- JS基础知识总结(十四):模块的语法
- 【前端学习-语法-事件onclick】js基础学习笔记
- JS核心语法
- js正则表达式语法
- js之少用但很重要的语法
- [JS] ES6语法上手
- ES6让普通JS开发看不懂的基本语法(快速上手ES6)
- flawchart.js笔记及语法
- js正则表达式语法
- js正则表达式语法
- 17.UIWebView 与 JS 交互的语法总结
- 引入JS文件IE6报语法错误或缺少对象问题的解决方法
- gulp-gulpfile.js语法说明
- js语法作用域之间的相关性