我正在尝试通过浏览应用程序中的一些代码来学习 JavaScript,并且我一直在查看!variable
if 条件。例如:
if (!variable.onsubmit || (variable.onsubmit() != false)) {
它是什么?如果变量为空,则进行某种测试?
我正在尝试通过浏览应用程序中的一些代码来学习 JavaScript,并且我一直在查看!variable
if 条件。例如:
if (!variable.onsubmit || (variable.onsubmit() != false)) {
它是什么?如果变量为空,则进行某种测试?
!
是JavaScript中的逻辑非运算符。
!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。
它是一个否定运算符,用于对变量进行真值测试。
var myVariable = 1;
if ( ! myVariable )
{
// myVariable evaluates as false
}
if ( myVariable )
{
// myVariable evaluates as true
}
所选答案已经回答了问题。要添加的一件事是!
操作符可以以一种相当有趣的方式使用。
obj = {}
if (!!obj) {console.log('works')} // !!obj = true
obj = undefined
if (!!obj) {console.log('does not work')} // !!obj = false
所以 double!!
会将任何表达式更改为一个boolean
值,没有例外。
在某些情况下,这有一个非常特殊的用例。
可以说有一个函数返回 true 或 false 而没有别的。在这种情况下,为了格外小心,您可以更改return returnValue
为return !!returnValue
(尽管在大多数情况下不需要)
相反,如果一个函数只接受 true 或 false 而没有其他参数,则可以将函数调用为functionA(!!parameter)
而不是functionA(parameter)
,这在大多数情况下也是不需要的,但可以确保额外的安全性
!是一个逻辑反转运算符,如果某事为真,则将其更改为假,如果某事为假,则将其更改为真。
例如,我们知道空字符串或布尔值中的 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