我正在尝试通过浏览应用程序中的一些代码来学习JavaScript,并且如果条件允许,我会继续查看!variable
。例如:
if (!variable.onsubmit || (variable.onsubmit() != false)) {
这是什么?如果变量是空的,可以进行某种测试吗?
答案 0 :(得分:43)
!
是JavaScript中的logical not operator。
!expression
读作:
expression
进行评估。在你的情况下是variable.onsubmit
onsubmit
可能是一个函数,它意味着 - 如果函数为null或未定义 - 返回false,否则返回true。 在你的情况下!variable.onsubmit
表示如果没有定义函数(因此是假的)则返回true,否则返回false(因为定义了函数)。
简单地说 - !variable
意味着取variable
的真值并否定它。
因此,if (!variable) {
如果变量为if
(或强制为假),则会输入false
子句
if (!variable.onsubmit || (variable.onsubmit() != false)) {
表示 - 检查variable.onsubmit
是否已定义且真实(因此为真),然后检查调用onsubmit
是否返回强制为真的结果。在一个短行中,它检查是否没有onsubmit
或它返回true。
答案 1 :(得分:3)
它是一个否定运算符,用于对变量进行真值测试。
var myVariable = 1;
if ( ! myVariable )
{
// myVariable evaluates as false
}
if ( myVariable )
{
// myVariable evaluates as true
}
答案 2 :(得分:0)
所选答案已经回答了问题。要添加的一件事是sudo pecl install mcrypt-1.0.1
运算符可以以一种非常有趣的方式使用。
!
因此,双obj = {}
if (!!obj) {console.log('works')} // !!obj = true
obj = undefined
if (!!obj) {console.log('does not work')} // !!obj = false
会将任何表达式更改为!!
值,没有例外。
在某些情况下,这是一个非常特殊的用例。
可以说有一个函数返回true或false,并且没有其他返回值。在那种情况下,可以格外小心地将boolean
更改为return returnValue
(尽管在大多数情况下不需要)
相反,如果一个函数仅接受true或false,而没有其他任何东西,则可以将其称为return !!returnValue
而不是functionA(!!parameter)
,这在大多数情况下都是不需要的,但可以确保额外的安全性
答案 3 :(得分:0)
!是逻辑逆运算符,如果为真,则将其更改为false;如果为真,则将其更改为true。
例如,我们知道空字符串或布尔值0为假。
let a = Boolean("")
console.log(a) // shows false, because empty string in boolean is false
console.log(!a) // shows true, because logic is reversed
更简单的示例:
let a = 5
let b = 1
let c = a > b
console.log(c) // shows true, since a,5 is bigger than b,1
console.log(!c) // shows false, since logic is now reversed