2017-08-24 15 views
-2

JS的算術運算符(+, - ,*,/)的確切性質是什麼?我想他們是功能,但他們不是數字或字符串的原型,他們絕對不是一流的公民。他們只是他們自己的東西?JavaScript算術操作符...它們在哪裏?

+6

您是否閱讀過ECMAScript規範?你知道什麼確切的部分? –

+0

http://www.ecma-international.org/ecma-262/6.0/ - 所有標準操作員都有自己的章節(例如http://www.ecma-international.org/ecma-262/6.0/# sec-addition-operator-plus),涵蓋了他們行爲的[有時是複雜的]規則。這些標準操作符通常不與任何「對象」關聯;想想C. – user2864740

+0

'您是否閱讀過ECMAScript規範?@RolandIllig請提醒我永遠不要邀請您參加我的任何一方.. :)無論如何,我要閱讀牛津詞典。 – Keith

回答

5

他們被稱爲infix operators,它們內置,並像Function prototypes行事。

很有趣的是,常規的JavaScript不會通過中綴操作符支持諸如冪,和你不得不求助於的Math擴展:

console.log(Math.pow(7, 2));

雖然ES6修復此問題:

console.log(7 ** 2);

雖然不能創建自己的綴運營商,您可以擴展它們:

Function.prototype['∘'] = function(f){ 
 
    return x => this(f(x)) 
 
} 
 

 
const multiply = a => b => (a * b) 
 
const double = multiply (2) 
 
const doublethreetimes = (double) ['∘'] (double) ['∘'] (double) 
 

 
console.log(doublethreetimes(3));

希望這有助於! :)

+1

這不是創建一個運營商。這只是擴展'Function.prototype'。 –

+1

標準的運算符絕對不是*函數原型。能夠創造「類似的東西」是一個不同的對話。 – user2864740

+0

稍作修改以解決這兩個問題。 –