什么是Javascript中的Syntactic Sugar?

时间:2018-06-13 11:01:45

标签: javascript

我看过很多帖子,说Class只是Syntactic Sugar或者在Javascript ES6中询问Class是否为Syntactic Sugar

但是我很难理解Syntactic Sugar的含义(我确实得到了易于阅读或理解的字面含义)。

我的问题是Javascript中的类是什么语法糖?

例如,在这个问题中are es6 classes just syntactic sugar for the prototypal pattern in javascript?

与此示例的相关性如何

class Thing {
   //... classy stuff
}

vs

var Thing = function() {
  // ... setup stuff
};

Thing.prototype.doStuff = function() {};

上面的类中是否应该有一些方法(doStuff)来使它等同比较?

3 个答案:

答案 0 :(得分:5)

是的,在提供的示例中应该有类中的方法。

语法糖意味着语言的新功能并不是新的。相反,它们是现有内容的更好的语法/您可以通过在旧版本中编写不同的内容来完全相同。因此,像Babel这样的转换器可以将新语法转换为旧语法。

答案 1 :(得分:4)

句法糖是抽象语法(简写,简化,易于理解,暴露必要)

任何简化的东西都是语法糖。

例如

  

可以考虑缩短的表单,例如“不要”或“没有”   句法糖

     

让a = b + c 可以将语法糖作为让a = b.Add(c)

Wikipedia -

  

在计算机科学中,语法糖是编程中的语法   旨在使事物更易于阅读或表达的语言。   它使语言“更甜”供人类使用:事物可以表达   更清楚,更简洁,或者某种可能的替代风格   喜欢。 source

使用好示例

数组引用是两个参数的过程:数组和下标向量,可以表示为get_array(Array, vector(i,j))

相反,许多语言都提供Array[i,j]

之类的语法

类似地,数组元素更新是三个参数的过程;

类似set_array(Array, vector(i,j), value)的内容,但许多语言都提供Array[i,j] = value等语法。

答案 2 :(得分:2)

在javascript类的情况下,我们使用术语Syntactic Sugar,因为当你编写类Something {}时,解释器实际上会根据旧的原型生成javascript代码。

所以"班级"此外,只不过是开发人员可以避免使用旧的原型模式,并使来自面向对象背景的人更轻松地使用javascripts functonal nature。

在你的例子中,比较是不正确的,因为缺少一个函数,但关键是在结束类中使用幕后的旧原型