0

我的问题如下:首先,我想检查某个对象是否存在,然后我想在它上面调用一个函数。例子:

if(obj_exists(my_object) && my_object.is_green()){...

如果 my_object 未定义,第二次调用显然会使程序崩溃。问题:“&&”是否保证按照代码中指定的顺序执行?如果第一个子句已经为假,“&&”是否保证停止?在所有浏览器/机器上?这是否也适用于 || (如果第一个子句已经为真,则停止执行)?

是否建议使用:

if(obj_exists(my_object) ? my_object.is_green() : false){...

因为这将明确指定顺序。这个版本比上面的代码示例慢吗?

编程语言 Eiffel 有一个“然后”运算符可以优雅地解决这个问题。我不期望 Javascript 优雅,只是一个可行的解决方案:)

4

1 回答 1

1

“如果第一个子句已经为假,“&&”是否保证停止?

是的。短路操作符&&||只会评估操作数直到结果已知,与它们&|对应物相反。

有些语言有and thenorAndAlso运算符。这对应&&于Javascript中的运算符,因为and运算符对应于&运算符。

于 2013-08-31T18:57:38.783 回答