Specs 语法糖和语法盐

阅读(4221)

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

语法盐(Syntactic salt),是指在计算机语言中为了降低程式设计师撰写出不良程式码的设计,但其中仍会有潜藏错误存在的可能。语法盐有可能会违背它的初衷,使程式码的可读性降低或浪费程式码的空间占用。

语法糖示例

ES5语法:

function Point(x, y) {
  this.x = x;
  this.y = y;
}

Point.prototype.toString = function () {
  return '(' + this.x + ', ' + this.y + ')';
};

ES6语法:

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }
}

两者的功能完全相同,底层实现一致,但ES6中的定义更加清晰,可读性更高,也适合其他语言程序员理解。ES6中增加了不少这样的语法糖,如arrow function(=>)、spread operator(...)等。

另外一个例子: C中采用 a[i][j] 表示 *(*(a+i)+j),免去了指针的繁琐。

语法盐示例

C#中,switch-case 语句中如果没有goto、return、throw 等跳离语法,需要带有break,否则会编译错误。但C、C++无此语法盐。

Refer:

  1. https://zh.wikipedia.org/wiki/%E8%AF%AD%E6%B3%95%E7%B3%96
  2. https://zh.wikipedia.org/zh-hans/%E8%AF%AD%E6%B3%95%E7%9B%90
  3. http://es6.ruanyifeng.com/#docs/class
Tags: