问题标签 [ecma]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
62 浏览

javascript - ECMAScript 2017:为什么 EscapeSequence 包含 NonEscapeCharacter?

以下摘录参考ECMAScript 2017

11.8.4 字符串文字,注 1

字符串文字是用单引号或双引号括起来的零个或多个 Unicode 代码点。Unicode 代码点也可以由转义序列表示。....任何代码点都可能以转义序列的形式出现。

11.8.4 字符串文字,语法

非终结符号EscapeSequence具有以下词法产生式:

非终结符号CharacterEscapeSequence具有以下词法产生式:

11.8.4.3 静态语义:SV

包含如下描述:

DoubleStringCharacter :: \ EscapeSequence 的 SV 是 EscapeSequence 的 SV

问题

  1. escape sequence注1中的含义是什么?试图理解转义序列的实际作用,而不仅仅是它的词汇语法
  2. 为什么CharacterEscapeSequence包括NonEscapeCharacter
  3. 11.8.4.3 静态语义:SV中的描述似乎不遵循用于词法语法产生的正常 ECMAScript 约定。这些描述是什么意思?
  4. 添加的问题:注 1 是否说明代码点可以在引号内或在转义序列(例如反斜杠)之后?是这个意思Any code points may appear in the form of an escape sequence吗?
0 投票
1 回答
75 浏览

javascript - ECMAScript 2017:StringLiteral 中的 EscapeSequence

以下摘录参考ECMAScript 2017

10.1 源文本,语法

转义序列,如\u000A,不会被解释为行终止符(即新行):

在字符串文字、正则表达式文字、模板文字和标识符中,任何 Unicode 代码点也可以使用明确表达代码点数值的 Unicode 转义序列来表达。在评论中,这样的转义序列作为评论的一部分被有效地忽略了。

ECMAScript 与 Java 编程语言的不同之处在于 Unicode 转义序列的行为。

如果 Unicode 转义序列 \u000A 出现在 Java 程序中的字符串文字中,则将其解释为行终止符,这在字符串文字中是不允许的。

在 ECMAScript 程序中的字符串文字中出现的 Unicode 转义序列总是对文字有贡献,并且永远不会被解释为行终止符或可能终止字符串文字的代码点。

11.8.4 字符串文字

代码点可能会在字符串文字中显示为转义序列,但反斜线 ( \) 除外。

字符串文字是用单引号或双引号括起来的零个或多个 Unicode 代码点。Unicode 代码点也可以由转义序列表示。除了结束引号代码点 U+005C (REVERSE SOLIDUS)、 U+000D (CARRIAGE RETURN)、 U+2028 (LINE SEPARATOR)、 U+2029 (PARAGRAPH SEPARATOR)、和 U+000A(线路馈送)。任何代码点都可能以转义序列的形式出现。

问题

  1. \如果不允许(11.8.4),如何在字符串文字中出现转义序列?
  2. 11.8.4。指出代码点可以表示为转义序列。10.1 规定\u000A字符串文字内的转义序列不会被解释为line terminator. 这两个似乎是矛盾的。如果它没有被解释为字符串文字内的换行符,那么它是如何解释的(如果有的话)?
0 投票
2 回答
74 浏览

javascript - ECMAScript 2017:字符串文字、StringValue、String value 和 SV 之间的区别

以下摘录参考ECMAScript 2017

11.8.4.2 静态语义:StringValue

11.8.4.3 静态语义:SV

字符串文字代表 String 类型的值。文字的字符串值 (SV) 是根据字符串文字的各个部分贡献的代码单元值来描述的。

问题

在上面的摘录中,出现了以下术语:

  1. string literal
  2. 非终结符StringLiteral
  3. String value
  4. SV

有人可以帮助解释这些术语之间的区别吗?

另外,最后一句11.8.4.2是什么意思?

0 投票
2 回答
178 浏览

parsing - ECMAScript:词汇语法与句法语法

我在理解ECMAScript 2017Lexical Grammar规范之间Syntactic Grammar的具体区别时遇到了一些困难。


ECMAScript 2017 节选

5.1.2 词法和正则表达式文法

第 11 节给出了 ECMAScript 的词法文法。该文法的终端符号是符合 10.1 中定义的 SourceCharacter 规则的 Unicode 代码点。它定义了一组产生式,从目标符号 InputElementDiv、InputElementTemplateTail 或 InputElementRegExp 或 InputElementRegExpOrTemplateTail 开始,描述如何将这些代码点序列转换为输入元素序列

除空格和注释之外的输入元素构成 ECMAScript 句法语法的终端符号,称为 ECMAScript 标记。这些标记是 ECMAScript 语言的保留字、标识符、文字和标点符号。

5.1.4 句法文法

当一个码位流被解析为一个ECMAScript Script或Module时,首先通过词法文法的重复应用将其转换为输入元素流;然后,该输入元素流由句法语法的单个应用程序解析。


问题

  1. 词汇语法
    • 这里它说终端符号是Unicode代码点(单个字符)
    • 它还说它产生输入元素(又名令牌)
    • 这些如何调和?终端符号要么是令牌,因此它会产生令牌。或者,终端符号是单独的代码点,这就是它产生的。
  2. 句法语法
    • 我对这个语法和词汇语法有同样的问题
    • 好像说这里的终端符号是token
    • 那么通过应用句法语法规则,产生了有效的标记,然后可以将其发送到解析器?或者,这个语法是否接受令牌作为输入,然后测试整个令牌流的有效性?

我最好的猜测

  1. 词法阶段
    • 输入:代码点(源代码)
    • 输出:应用词法产生式产生有效的记号(词位类型+值)作为输出
  2. 解析阶段
    • 输入:代币
    • 输出:应用句法文法产生 (CFG) 来确定所有标记是否一起表示一个有效的流(即源代码作为一个整体是一个有效的Script/ Module
0 投票
2 回答
88 浏览

javascript - javascript promise中的“then block”和“then handler”有什么区别?

在此链接中的 javascript 中的承诺文档中。这个已经写完了:

使用已解决的承诺,“then”块将立即触发,但其处理程序将异步触发

我不太明白它所说的块将被触发但处理程序被异步触发的部分。我的问题是:

  1. then 块是什么?它的处理程序是什么,它们有何不同?

  2. 每个触发什么?

  3. 当该异步触发器发生时,它毕竟被解决了

谢谢你。

0 投票
3 回答
178 浏览

javascript - 将对象数组转换为网格可读数组

我正在使用 ajax 获取 json 数据。然后我想使用 griddle-react 在 Griddle 中输出它。问题是我无法将我的数组转换为 Griddle 可读数组。

在ajax fetch之后我做了一个回调函数:

第一个 console.log 输出如下所示:

我的函数使它看起来像这样:(第二个console.log):

我希望它转换为以下数组,基本上添加名称项,然后 Griddle 可以读取它:

我在这里做错了什么?我确信它非常接近我想要的,但我现在无法弄清楚。

0 投票
1 回答
68 浏览

javascript - 有人可以解释语句值 Javascript ECMAScript 的使用吗?

我是 Javascript 新手,并注意到语句具有值:

有人可以解释为什么语句具有它们在实际应用程序中使用的值,因为函数需要通过return.

这是否与完成的概念有关,完成的概念与值相关,无论其类型如何(正常或突然)?

0 投票
1 回答
292 浏览

javascript - E4x xml 空标签删除

我正在尝试删除使用 E4X javascript 需要实现的具有空值的 XML 属性。请帮助我。代码:

}

输入:

预期输出:

通常,我需要从 XML 中删除空标记的值。请指导我,我尝试了一些对我不起作用的示例代码。

0 投票
1 回答
92 浏览

javascript - 在导出函数中调用导出函数

我需要在另一个中调用导出的函数。

这是我的第一个功能,称为:

这是我想在前一个函数中调用的单独文件(initialization/index.js)中的另一个导出函数。

在控制台中,我只有“称为 1”的消息。所以我猜第二个函数没有被调用。你能帮我修一下吗?谢谢你。

编辑:

第一个函数在我的 app.js 中被调用,如下所示:

我确定调用第一个函数是因为我在控制台中收到消息,问题出在第二个。

0 投票
2 回答
347 浏览

javascript - ES6 Classes that depend on each other in static variables

I have two classes that I want to define relationships for. I am trying to use static variables to achieve this however the references to the classes are not defined.


In the Task class, checklist is undefined and in the Checklist class Task is defined but not as I would expect it. Is there anyway to get this to work?