【发布时间】:2011-05-10 02:44:00
【问题描述】:
以下哪个表达式在所有浏览器(尤其是 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 上进行一些测试后,似乎所有浏览器都遵循该标准。
一般来说
依赖 javascript 中的 valueOf 方法时例外。 ValueOf 在谷歌浏览器的特定情况下肯定会被称为倒退。
// The following alerts second then first in google chrome
first.valueOf = function(){alert('first');};
second.valueOf = function(){alert('second');};
first > second;
【问题讨论】:
标签: javascript evaluation