通过查看我们其中一个项目的源代码,我发现了一些我们在条件语句中使用三个惊叹号的地方,如下所示:
if (!!!someVar) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
现在,我明白这不是某种很少使用的算子,它只是连续三次否定,就像!(!(!someVar))).我不明白它的用途是什么 - 在我看来它可以安全地用单个感叹号代替.以下是我尝试查找!!!a不等于的案例!a(直接从谷歌Chrome控制台获取):
var a = ''
""
!!!a === !a
true
a = 'string'
"string"
!!!a === !a
true
a = null
null
!!!a === !a
true
a = 12
12
!!!a === !a
true
a = {b: 1}
Object {b: 1}
!!!a.c === !a.c // a.c is undefined here
true
a = []
[]
!!!a === !a
true
a = [1,2]
[1, 2]
!!!a === …Run Code Online (Sandbox Code Playgroud) 我想了解在Vue.js中有条件地呈现HTML属性的最佳方法是什么.例如,data-toggle="tooltip"如果当前实例有工具提示消息,请添加.
我现在的代码:
<span
:data-toggle="!!col.col_spec.tooltip ? 'tooltip' : ''"
:title="col.col_spec.tooltip"
>
{{ col.col_spec.title }}
</span>
Run Code Online (Sandbox Code Playgroud)
虽然,我不太喜欢第二行...即使我在这里使用计算属性data-toggle,当没有工具提示显示时,我宁愿根本没有属性.
有什么区别!!!和!?
找到toBeFalsy匹配器中的jasmine源代码.
铬devtools的结果
!!!undefined
true
!undefined
true
!!!null
true
!null
true
!!!0
true
!0
true
Run Code Online (Sandbox Code Playgroud) 我尝试在循环中将数据属性值有条件地添加到我的 vue 列表中,然后尝试以下操作
<ul data-parent="{{model.parent_id !== null ? model.parent_id : 0}}"></ul>
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,列表不再呈现,如果转储到 html 标签{{model.parent_id !== null ? model.parent_id : 0}}之外,我会看到正确的输出