AS3 && || 经营者的指示

Ziu*_*iul 3 actionscript-3

运营商在指令上评估什么?

喜欢:

var flag:Boolean=true;
flag && trace("1") && trace("2") && trace("3");
Run Code Online (Sandbox Code Playgroud)

输出:1 2 3

var flag:Boolean=true;
flag && trace("1") || trace("2") || trace("3");
Run Code Online (Sandbox Code Playgroud)

输出1

或者运算符在idk下打破句子的情况......

编辑:好的,现在我看到句子如何与运算符一起工作,但是任何指令没有返回值被评估为真?

看来你无法评估你想要的任何指令,例如:

private function any():void{
true && return;
}
Run Code Online (Sandbox Code Playgroud)

这将引发编译错误.

编辑:在这种情况下,它的行为与第二个示例不同:

true && one() || two() || three();
Run Code Online (Sandbox Code Playgroud)

功能

private function one():void{
    trace("1");
}
private function two():void{
    trace("2");
}
private function three():void{
    trace("3");
}
Run Code Online (Sandbox Code Playgroud)

输出:1 2 3

编辑:分配值:

var a:int;
(a=1) || trace("1");
(a=2) && trace("2");
Run Code Online (Sandbox Code Playgroud)

输出:2

编辑: ||返回expression1如果为true或可以转换为true,否则返回expression2

&& "返回expression1,如果它为false或者可以转换为false,则返回expression2.可以转换为false的值的示例是0,NaN,null和undefined".

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/operators.html#logical_OR

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/operators.html#logical_AND

Ahe*_*Ahe 6

这称为短路评估.基本上,当可以确定其结果时,停止和/或表达评估.

例如,当评估和(&&)评估可以在此时停止,首先发现错误.false && true && true && true...无论你添加多少真值,它总是假的.同样适用于或者是真值.


zzz*_*Bov 5

ActionScript 3是一种ECMAScript变体,这意味着它基于与JavaScript相同的标准.

因为这&&||是不是类似于其他C风格的语言.

a || b返回a如果a是truthy,否则返回b.

a && b返回a如果a是falsey,否则返回b.

||基本上等同于a ? a : b,&&基本上等同于!a ? a : b.

他们还有一个短路评估机制.如果要返回第一个参数,则不执行第二个参数.