主题:  请教个简单的问题

阿文2

职务:普通成员
等级:1
金币:0.0
发贴:40
#12003/1/16 22:33:26


小弟初学AS,近日download了flash的中文帮助,其中有这么一段代码小弟不太理解,请各位高手指教

“此示例演示非布尔表达式是如何导致意外结果的,如果左则的表达式组转换为true,则返回结果,而不再转换右则表达式。
function fx1(){
trace("fx1 called");
return true;
}
function fx2(){
trace("fx2 called");
return true;
}

if(fx1()||fx2()){
trace("IF sttatememt entered")
}


小弟不明白的是:为什么会在output window中输出“fx1 called”和“IF sttatememt entered”,小弟觉得正确的应该是:只输出IF sttatememt entered,而不输出fx1 called,还有就是:“如果左则的表达式组转换为true,则返回结果”,这里的结果指的是:true还是fx1 called。请各位高手指教



UndeadCraft

职务:版主
等级:4
金币:10.0
发贴:1993
#22003/1/16 23:14:06
结果是true
不过运行的时候trace了会运行啊



阿文2

职务:普通成员
等级:1
金币:0.0
发贴:40
#32003/1/18 11:19:59
地狱天堂兄,那么是不是因为fx1返回的结果是true,那么就不返回fx2,所以最终没有输出fx2 called呢?



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#42003/1/18 11:45:13
阿文2在上个帖子中说
引用:
地狱天堂兄,那么是不是因为fx1返回的结果是true,那么就不返回fx2,所以最终没有输出fx2 called呢?
就是这样的,这符合高效的逻辑处理规则,因为既然fx1已经为true,true和任何逻辑值或的结果总是true,所以就没有必要进行后面的运算。