运营商在指令上评估什么?
喜欢:
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
这称为短路评估.基本上,当可以确定其结果时,停止和/或表达评估.
例如,当评估和(&&)评估可以在此时停止,首先发现错误.false && true && true && true...无论你添加多少真值,它总是假的.同样适用于或者是真值.
ActionScript 3是一种ECMAScript变体,这意味着它基于与JavaScript相同的标准.
因为这&&和||是不是类似于其他C风格的语言.
这||基本上等同于a ? a : b,&&基本上等同于!a ? a : b.
他们还有一个短路评估机制.如果要返回第一个参数,则不执行第二个参数.