做 ”!!”在 GTM 脚本中有特殊含义?
Does "!!" have a special meaning in GTM scripts?
我在 GTM 脚本中遇到了以下语法,但不太确定它应该如何工作:
if(!!{{var1}} && !!{{var2}}){
// . . . other code here
}
现在,我知道 {{}}
语法用于捕获变量值,但我找不到任何对 !!
运算符的引用(如果有的话)。
它是否代表了GTM中的某些东西,或者它只是草率的编程并且可以删除这些!!
?我应该提一下,此脚本中还有更多 if
语句,它们看起来都很正常。这是唯一具有这些 !!
的。有什么想法吗?
这不是特定于 GTM 脚本的,它是将对象强制转换为布尔值的标准 JavaScript 做法。在 JavaScript 中有 null 或 undefined 等虚假值(list here),这些在使用后将是 false !! (bang bang),否则为真。
请注意,这不是一个特殊的操作数,只是! (NOT) 使用两次强制类型为布尔值。
这里有一篇很好的文章解释得很好:https://medium.com/@edplatomail/js-double-bang-or-the-not-operator-part-40e55d089bf0
回答你的问题,不是马虎编程,不应该被删除。
我在 GTM 脚本中遇到了以下语法,但不太确定它应该如何工作:
if(!!{{var1}} && !!{{var2}}){
// . . . other code here
}
现在,我知道 {{}}
语法用于捕获变量值,但我找不到任何对 !!
运算符的引用(如果有的话)。
它是否代表了GTM中的某些东西,或者它只是草率的编程并且可以删除这些!!
?我应该提一下,此脚本中还有更多 if
语句,它们看起来都很正常。这是唯一具有这些 !!
的。有什么想法吗?
这不是特定于 GTM 脚本的,它是将对象强制转换为布尔值的标准 JavaScript 做法。在 JavaScript 中有 null 或 undefined 等虚假值(list here),这些在使用后将是 false !! (bang bang),否则为真。
请注意,这不是一个特殊的操作数,只是! (NOT) 使用两次强制类型为布尔值。
这里有一篇很好的文章解释得很好:https://medium.com/@edplatomail/js-double-bang-or-the-not-operator-part-40e55d089bf0
回答你的问题,不是马虎编程,不应该被删除。