赋值后的感叹号:A = B ! C

Exclamation mark behind assigned value: A = B ! C

我正在阅读公司 javaScript 的一篇文章,我发现了以下内容:

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

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

嗯,你的代码是错误的,无法解析。你甚至可能会遇到一个奇怪的无法理解的错误。

Does it mean that if first value is NULL the second on should be placed in seriesCode?

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

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

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

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

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

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

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