2012-11-23 76 views
3

下面的函数内的表达式求值从右到左从右到左评估,从左至右链方法

function foo(){ 

var a = b = c; 

} 

所以它就像是输入这样

var a = (b = 0) 

然而,当方法被链接在一起,他们从左到右读。在这个对象的方法...

var obj = { 
    value: 1, 
    increment: function() { 
     this.value += 1; 
     return this; 
    }, 
    add: function (v) { 
     this.value += v; 
    return this; 
    }, 
    shout: function() { 
     alert(this.value); 
    } 
}; 

可以这样调用,从左向右计算

obj.increment().add(3).shout(); // 5 

//由一个

obj.increment(); 
obj.add(3); 
obj.shout(); // 5 

所以不是叫他们一个,我想我知道什么时候从左到右,从左到右阅读,但是有一条规则,我需要知道哪些我不知道?

回答

4

规则称为“操作符关联性”,它与运算符优先级一起,是大多数语言中每个运算符的一个属性(算术运算,成员访问,是一元运算还是二元运算等)。关联性通常由语言规范定义,通常可以在书籍,教程,作弊表格等中找到。 JavaScript的第一个谷歌搜索结果之一是:http://www.javascriptkit.com/jsref/precedence_operators.shtml