【问题标题】:Dollar sign followed by a square bracket in a template string模板字符串中的美元符号后跟方括号
【发布时间】:2015-09-13 10:59:09
【问题描述】:

我在弄一些 ES6 代码时遇到了这个

let vendors = ['ms', 'moz', 'webkit', 'o'];
let root = window || global;
let performance = window.performance || {};
if (!performance.now) {
  vendors.some(function(vendor) {
    performance.now = performance[`$[vendor}Now`];
    ...

我可以猜到下面的代码片段是做什么的,但它是什么类型的库/语法?这不是我以前见过的东西,也不是纯粹的 ES6,对吧?

`$[vendor}Now`

【问题讨论】:

  • 看起来是个错误。询问代码的作者。
  • 除了语法错误之外,所有这些都是不必要的,因为 webkit 是唯一一个显然曾经使用过performance.webkitNow 的平台,而这可以追溯到 v20 中。

标签: javascript string templates syntax ecmascript-6


【解决方案1】:

这似乎是一个语法错误。正确的应该是:

`${vendor}Now`

这是这里提到的美元表达式:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/template_strings

模板字符串用反引号 (`)(重音)字符而不是双引号或单引号括起来。模板字符串可以包含占位符。这些由美元符号和花括号 (${expression}) 表示。

模板字符串中的方括号是错误的。

更具体地说,如果您有:

var expression = 'test';

console.log(`string text ${expression} string text`); //Correct syntax

以上代码将导出:“string text test string text”

但下面的代码有一个左方括号和一个右方括号curly bracket

var expression = 'test';

console.log(`string text $[expression} string text`); //Wrong syntax

只会导出:“string text $[expression} string text”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-22
    • 2016-10-28
    • 1970-01-01
    • 2015-08-21
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多