|
主题: 请教个简单的问题
|
 阿文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,所以就没有必要进行后面的运算。
|