在所有浏览器(尤其是 IE6+、F3+、Opera 9+、Chrome)中,以下哪个表达式始终位于从左到右的前面?例如,窗口应该始终提示 first function
然后是 second function
。在 C 中,他们总是建议不要依赖于表达式求值的顺序。 JavaScript 也是一样还是运算符优先级一致?
function first(){
alert('first function');
return 0;
}
function second(){
alert('second function');
return 23;
}
first() + second();
first() - second();
first() * second();
first() / second();
first() < second();
first() > second();
使用 mozilla看起来功能评估应该在所有浏览器中保持一致,但显然并不总是遵循标准。
测试
在 browsershots.org 上进行了一些测试后,似乎所有浏览器都遵循该标准。
一般来说
异常(exception)情况是依赖于 javascript 中的 valueOf
方法。 ValueOf
在谷歌浏览器的特定情况下肯定会向后调用。
// The following alerts second then first in google chrome
first.valueOf = function(){alert('first');};
second.valueOf = function(){alert('second');};
first > second;
最佳答案
ECMAScript 5指定所有运算符的操作数的评估顺序。对于代码片段中的每个运算符,评估顺序都是从左到右的。不过,我不确定是否有人可以回答有关所有 浏览器行为的问题。
编辑:另见 ECMAScript 3.评估顺序的定义方式相同。
关于运算符的 Javascript 评估顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5944593/