Lim*_*ime 8 javascript evaluation
在所有浏览器中,以下哪个表达式总是从左到右(特别是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();
Run Code Online (Sandbox Code Playgroud)
使用mozilla看起来功能评估应该在所有浏览器中都是一致的,但显然并不总是遵循标准.
在browsershots.org上进行一些测试后,所有浏览器都会遵循该标准.
通常异常是valueOf在javascript中依赖方法时. ValueOf在谷歌浏览器的特定情况下肯定会被称为倒退.
// The following alerts second then first in google chrome
first.valueOf = function(){alert('first');};
second.valueOf = function(){alert('second');};
first > second;
Run Code Online (Sandbox Code Playgroud)
ECMAScript 5指定了所有运算符的操作数的评估顺序.对于代码中的每个操作符,剪辑的评估顺序是从左到右.我不确定是否有人可以回答所有浏览器的行为.
编辑:另请参阅ECMAScript 3.评估顺序的定义方式相同.
将表达式计算为一个值(例如涉及函数调用)总是从左到右进行。
但是,一旦您比较两个值,它们就不会转换为基元,以便以从左到右的方式进行实际比较。例如,在 Chrome 中尝试以下操作:
var l = {valueOf: function() { alert("L"); }};
var r = {valueOf: function() { alert("R"); }};
l < r; //alerts "L", then "R"
l > r; //alerts "R", then "L"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3856 次 |
| 最近记录: |