0
Wikipediaによると、modulo operator(整数除算の残余)は、0
とn-1
の間の結果をもたらすはずです。Javascriptモジュロ演算子は他の言語とは異なる動作をします
これは確かにpython
の場合である:
Ruby
で
print(-1%5) # outputs 4
:
Haskell
main = putStrLn $ show $ mod (-1) 5
しかしJavascript
中で
puts -1%5 # outputs 4
:
console.log(-1%5);
結果は-1
です!
なぜですか?この意思決定の背後には論理がありますか?
-1
は4
モジュロ5
に相当しますが、負の値を指定するとインデックスとして使用するのが難しくなります。例えば
:配列の長さを超える5
ですが、Javascript
では、これが起こるのを待っている例外のとき
arr[x%5]
は常にpython
とRuby
で有効な式になります。
あなたはウィキペディアを参照し、まだそれは明らかに、AまたはNのいずれかが負の場合には、素朴な定義が壊れるとプログラミング言語は、それは言語があなたのようにそれに違反しているprogamming好きではないですので、これらの値はdefined.'方法が異なり '述べてまた主張する。 – vlaz
これが当てはまることは明らかですが、その理由は何ですか? –
また、JS内で 'arr [x%5]'が ''例外が発生するのを待っているのは見えません - 負の数を渡すと負の結果が出ますので '' undefined ' 。演算子が実際にPythonのように動作した場合、配列から_random_要素が得られます。だから、あなたはバグを抱えていて、後でそれが見つかることはありません。 – vlaz