在Javascript / Typescript中,三括号(即{{{stuff}}})是什么意思?

时间:2018-10-31 15:38:08

标签: javascript reactjs typescript

我正在浏览一个我想参与的新项目的代码,作者使用三重括号定义了很多方法,如下所示:

deinitialize() {{{
    this.destroyed = true;
    $(window).off("resize", this.resize as () => void);
    if (this.resize_debounce) {
        clearTimeout(this.resize_debounce);
        this.resize_debounce = null;
    }
    this.svg.remove();
    this.container = null;
}}}

我从未见过以这种方式使用三重括号(括号?小胡子?)。我对它们的唯一经验是与Polymer之类的数据绑定。这是怎么回事?

该项目使用打字稿(我也没有经验)编写,并且此特定位在.tsx文件中。它还使用React,这可能是不相关的。此功能是否来自其中之一?还是我从未见过的本机JS?

源代码在这里:https://github.com/online-go/online-go.com/blob/devel/src/components/RatingsChart/RatingsChart.tsx

此外,如果措词不明确,我深表歉意。我不确定这些来自何处,也不太熟悉该项目中使用的语言或固件。谢谢你的耐心! (并根据需要进行编辑:))

2 个答案:

答案 0 :(得分:2)

在javascript语句中,您可以根据需要使用任意多个匹配的花括号:

function test(){{{
   console.log("Im in lots of braces.");
}}}

test();

行为没有任何变化*。使用此代码对反应没有任何特殊影响。

我的最佳猜测是,链接代码的开发人员对React组件遵循某种约定。但据我所知,它不是更广泛的社区所使用的,否则我们会发现更多。

*可能要花几纳秒的时间才能处理它。 H / T:Keith;)

答案 1 :(得分:0)

简而言之,这是因为如果函数内的object中还有另外一对括号,那么将很难阅读。

示例(它们比这更难读):

function translate(num){
    var translations = {
         1: 'one',
         2: 'two',
         3: 'three',
         4: 'four',
         5: 'five',
         6: 'six'
    };


    return translations[num];
};

它使它变得更容易(尤其是当存在多个原型或对象时。多括号使之更容易。您可以使用},},},}},}}}},}}}}},.. 。使其更易于阅读,例如:

function translate(num){{
    var translations = {
         1: 'one',
         2: 'two',
         3: 'three',
         4: 'four',
         5: 'five',
         6: 'six'
    };
 }};

您只能对函数执行此操作,而不能对对象执行此操作。这也适用于括号;您可以使用',“,”,“,”,“,”“,...等。 多括号应该能够在不将其括起的情况下将其他括号放入其中:

 var question = "' "how'd you do that?" said Tom "';
 // triple brackets
在该示例中,

用于将单括号作为撇号,将双括号作为语音括号。

快乐的编码!