javascript函数和逻辑操作
为什么选择这一行:javascript函数和逻辑操作,javascript,function,Javascript,Function,为什么选择这一行: true && function() {console.log("aaa");}() true || function() {console.log("aaa")}() 印刷品 aaa 未定义 但是 这一行: true && function() {console.log("aaa");}() true || function() {console.log("aaa")}() 印刷品 真的 我很好奇发生了什么事? 为什么要执行该
true && function() {console.log("aaa");}()
true || function() {console.log("aaa")}()
印刷品
aaa
未定义
但是
这一行:
true && function() {console.log("aaa");}()
true || function() {console.log("aaa")}()
印刷品
真的
我很好奇发生了什么事?
为什么要执行该函数?第一个参数正在计算这两个条件,因为第二个参数(匿名函数)是匿名的,但尚未定义。
|
运算符在其第一个参数(此处为true
)上的计算结果仅为true,因此它只打印true
第一个参数正在计算这两个条件,因为第二个参数(匿名函数)是匿名的,并且未定义。
|
运算符在这里的第一个参数(true
)上计算结果为true,因此它只打印true
,这是因为&
运算符是逻辑连词(和
)。两个操作数都必须为true
,语句才能为true
同时,|
是逻辑析取(或
)。即使只有一个操作数是true
,它也将是true
当逻辑析取(
或
)发现第一个操作数为真时,无需进一步查找,它可以返回真。这是因为&
运算符是逻辑连词(和
)。两个操作数都必须为true
,语句才能为true
同时,|
是逻辑析取(或
)。即使只有一个操作数是true
,它也将是true
当逻辑析取(
或
)发现第一个操作数为真时,无需进一步查找,它只需返回真。而&&logical操作检查两个表达式的计算结果为真,而| |运算符只需要一个表达式为真。因此,在第一种情况下,由于第一个表达式的计算结果为true,它会检查另一个表达式(函数),这就是函数运行的原因。在第二种情况下,第一个表达式的计算结果为true,这就是它所需要的,因此它停止在那里。而&&逻辑运算检查两个表达式的计算结果为true,而| |运算符只需要一个表达式为true。因此,在第一种情况下,由于第一个表达式的计算结果为true,它会检查另一个表达式(函数),这就是函数运行的原因。在第二种情况下,第一个表达式的计算结果为true,这就是它所需要的,因此它停止在那里。在JavaScript&&
和|
操作中使用。一旦结果完全确定,它就会停止评估,而不会评估其余的结果
例如,将第一个示例更改为:
false && function() {console.log("aaa");}()
在JavaScript
&&
和|
操作中使用。一旦结果完全确定,它就会停止评估,而不会评估其余的结果
例如,将第一个示例更改为:
false && function() {console.log("aaa");}()
输入
true&&false
,结果将是false
。这意味着它正在检查条件和打印第二个条件
输入true | | false
,结果将为true
。这意味着,一旦第一个条件的计算结果为true,它就不会检查第二个条件并打印第一个条件
这解释了打印的内容
您的第一个案例:当您输入
true&&function(){console.log(“aaa”);}()
时,它也在计算第二个条件,并且由于您的第二个条件是一个可调用函数[您最后使用的是()
),因此将打印其结果,即“aaa”。最后不要使用
()
,即输入true&&function(){console.log(“aaa”);}
,结果将是您的第二个条件function(){console.log(“aaa”);}
您的第二个案例:当您输入
true | | function(){console.log(“aaa”)}()
时,您的第一个条件本身变为true,因此不计算第二个条件,因此只打印true。输入true&&false
,结果将是false
。这意味着它正在检查条件和打印第二个条件
输入true | | false
,结果将为true
。这意味着,一旦第一个条件的计算结果为true,它就不会检查第二个条件并打印第一个条件
这解释了打印的内容
您的第一个案例:当您输入
true&&function(){console.log(“aaa”);}()
时,它也在计算第二个条件,并且由于您的第二个条件是一个可调用函数[您最后使用的是()
),因此将打印其结果,即“aaa”。最后不要使用
()
,即输入true&&function(){console.log(“aaa”);}
,结果将是您的第二个条件function(){console.log(“aaa”);}
您的第二个案例:当您输入
true | | function(){console.log(“aaa”)}()
时,您的第一个条件本身变为true,因此不计算第二个条件,因此只打印true。执行函数是因为函数末尾有括号。请尝试true&&function(){console.log(“aaa”);}
,aaa不会显示。为什么只有function(){console.log(“aaa”)}()是语法错误,而添加“true&”,则执行函数?执行函数是因为函数末尾有括号。请尝试true&&function(){console.log(“aaa”);}
,aaa不会显示。为什么只有function(){console.log(“aaa”)}()是语法错误,而add“true&&”则会执行该函数?