指定值后面的感叹号:A = B! C

时间:2016-03-07 19:32:19

标签: javascript freemarker

我正在阅读公司的javaScript cods,我发现了以下内容:

seriesCode = pageRecord.getProperty('seriesCode')!'XXX' 

这是否意味着如果第一个值为NULL,那么第二个值应该放在seriesCode中?

2 个答案:

答案 0 :(得分:2)

好吧,你的代码错了,无法解析。你甚至可能会得到一个奇怪的不可理解的错误。

  

这是否意味着,如果第一个值为NULL,则第二个值应放在seriesCode中?

不,它只是错误并且无法被javascript理解。 !是一元运算符,因此如果您尝试将其用作二元运算符(在两个值之间),它可能会以奇怪的方式失败。

使用||运算符完成了您的要求:

seriesCode = pageRecord.getProperty('seriesCode')||'XXX';

您可能会看到!一元运算符的技巧,但它是双重感叹号:

existsSeriesCode = !!pageRecord.getProperty('seriesCode');

这里的想法是,使用第一个感叹号,您将对象转换为布尔值,其中false表示此变量是对实例的引用,true表示变量包含nullundefined。然后第二个感叹号会再次否定它,这意味着true包含一个实例,false包含undefinednull

答案 1 :(得分:0)

看起来像FreeMarker模板语言,是的,!运算符,当出现在操作数的右侧时,如果左侧表达式为null或对缺失的引用,则给出默认值变量