2017-08-24 9 views
-2

JSの算術演算子(+、 - 、*、/)の正確な性質は何ですか?私は彼らが関数だと思っていますが、NumberやStringのプロトタイプではなく、間違いなくファーストクラスの市民でもありません。彼らはちょうど自分のものですか?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私のパーティーにあなたを招待しないように私に思い出させてください.. :)とにかく、私はOxfordの辞書を読んでいます。 – 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

両方の問題に対処するために少し編集されています。 –

関連する問題