我正在浏览一个我想参与的新项目的代码,作者使用三重括号定义了很多方法,如下所示:
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
此外,如果措词不明确,我深表歉意。我不确定这些来自何处,也不太熟悉该项目中使用的语言或固件。谢谢你的耐心! (并根据需要进行编辑:))
答案 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
在该示例中,用于将单括号作为撇号,将双括号作为语音括号。
快乐的编码!