我正在浏览 Discover Meteor 演示,并且正在努力弄清楚“返回!”到底是如何实现的。用户身份;'工作于 this section :
Posts.allow({
insert: function(userId, doc) {
// Only allow posting if you are logged in
return !! userId;
}
});
最佳答案
!
是逻辑否定或“非”运算符。 !!
是 !
的两倍。这是一种将“true”或“falsy”值分别转换为 true
或 false
的方法。给定一个 bool 值,!
将对值求反,即 !true
产生 false
,反之亦然。给定 bool 值以外的值,该值将首先转换为 bool 值,然后取反。例如,!undefined
将首先将 undefined
转换为 false
,然后对其取反,产生 true
。应用第二个 !
运算符 (!!undefined
) 会产生 false
,因此实际上 !!undefined
会转换 未定义
到false
。
在 JavaScript 中,值 false
、null
、undefined
、0
、-0
、NaN
和 ''
(空字符串)是“假”值。所有其他值都是“真实的”。 (1):7.1.2以下是应用于各种值的 !
和 !!
真值表:
value │ !value │ !!value
━━━━━━━━━━━┿━━━━━━━━━━┿━━━━━━━━━━━
false │ ✔ true │ false
true │ false │ ✔ true
null │ ✔ true │ false
undefined │ ✔ true │ false
0 │ ✔ true │ false
-0 │ ✔ true │ false
1 │ false │ ✔ true
-5 │ false │ ✔ true
NaN │ ✔ true │ false
'' │ ✔ true │ false
'hello' │ false │ ✔ true
关于javascript - 双感叹号 (!!) 在 JavaScript 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29312123/