Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript函数和逻辑操作_Javascript_Function - Fatal编程技术网

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&&”则会执行该函数?