我正在通过查看应用程序中的一些代码来学习 JavaScript,而且我经常在 if 条件语句中看到 !variable
。例如:
if (!variable.onsubmit || (variable.onsubmit() != false)) {
这是什么?一种测试变量是否为空的方法吗?
我正在通过查看应用程序中的一些代码来学习 JavaScript,而且我经常在 if 条件语句中看到 !variable
。例如:
if (!variable.onsubmit || (variable.onsubmit() != false)) {
这是什么?一种测试变量是否为空的方法吗?
!
是JavaScript中的逻辑非操作符。
!expression
读作:
expression
并对其进行求值。在您的情况下,这是variable.onsubmit
onsubmit
可能是一个函数,因此意味着-如果函数为null或undefined-返回false,否则返回true。在您的情况下,!variable.onsubmit
表示如果没有定义函数(因此为假),则返回true,否则返回false(因为已定义函数)。
简单来说- !variable
表示取出variable
的真值并对其取反。
因此,if (!variable) {
将进入if
子句,如果变量是false
(或强制转换为false)
if (!variable.onsubmit || (variable.onsubmit() != false)) {
意思是 - 检查 variable.onsubmit
是否已定义并为真(因此为 true),然后检查调用 onsubmit
是否返回一个强制转换为 true 的结果。简而言之,它检查是否没有 onsubmit
或它返回 true。
variable.onsubmit()
。没有理由这么做。没有办法说得好 - 这个语句的第二部分只是编码不良。 - Benjamin Gruenbaumvar 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
因此,双重 !!
将任何表达式更改为布尔值,没有例外。
这在某些情况下具有非常特殊的用途。
假设有一个函数只返回 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
!
的含义,就要搜索 "感叹号 javascript")。 - Qantas 94 Heavy