【问题标题】:What is Syntactic Sugar in Javascript?Javascript 中的语法糖是什么?
【发布时间】:2018-06-13 11:01:45
【问题描述】:

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

但是我很难理解语法糖的含义(我确实理解了使事情易于阅读或理解的字面意思)。

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

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

就像这个例子是如何相关的

class Thing {
   //... classy stuff
}

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

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

上面的类中不应该有一些方法(doStuff)使其相等比较吗?

【问题讨论】:

  • 它一定被忽略/忘记了。
  • 是的,在 "classy stuff" 部分会有一个doStuff(){} 声明
  • 你真的只是要我们解释别人的堆栈溢出问题吗?您为什么不直接评论原始问题并询问他们的意思?
  • 我看到多个问题,尝试一次问一个。简短的回答:class 被称为语法糖,因为在它被引入之前,到处都有functions,用于声明类似class 的可以实例化的构造+ 语法糖 的定义保持不变对于几乎每种语言,javascript 阅读都不会有所不同:en.wikipedia.org/wiki/Syntactic_sugar

标签: javascript


【解决方案1】:

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

语法糖意味着语言的新特性并不是真正的新特性。相反,它们对于现有的东西来说是一种更好的语法/您可以通过在旧版本中编写不同的东西来做完全相同的事情。因此,有像 Babel 这样的编译器可以将新语法转换为旧语法。

【讨论】:

    【解决方案2】:

    语法糖是抽象语法(简写、简化、易于理解、暴露了必要的内容)

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

    例如

    可以考虑缩短形式,例如“don't”或“haven't” 语法糖

    let a = b + c 可以有语法糖为 let 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 的语法。

    【讨论】:

      【解决方案3】:

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

      因此,“类”的添加只不过是让开发人员避免使用旧的原型模式,并使来自面向对象背景的人们更容易与 javascript 的功能性质合作。

      在您的示例中,比较不正确,因为缺少一个函数,但关键是最终类在幕后使用旧原型

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-30
        • 2010-09-15
        • 2020-06-01
        • 2015-10-17
        • 2013-11-02
        • 2013-11-28
        • 2012-05-22
        • 2012-01-07
        相关资源
        最近更新 更多