Engineで動かす。Math.maxを使っていたら思ったよりハマりそうな挙動があったのでまとめておきたい。今回書いてる事はMDNにも記載されている。Math.maxは数値に変換出来ないものが一つでもあるとNaNを返すまず、これらの関数は受け取る引数の中にNaNが混じっている場合NaNを返す。NaNそして、受け取る引数はすべてNumberにキャストされる。Number(true)が1として評価される)数値に変換された時にどうなるかは結構覚えゲーな所があるので、そもそもこのような値が入らないようにするのが望ましいだろう。-Infinityminやmaxのような関数に何も入れなかった場合の挙動は各言語で変わるだろうが、JavaScriptはこうなるらしい。なるかは下記に有益な記事があったのでそちらに任せたい。https://qiita.com/KtheS/items/9811b88d6e7edbf32f36https://charlieharvey.org.uk/page/why_math_max_is_less_than_math_min(reduce関数の初期値としてそれぞれ利用されていると捉えると個人的には腑に落ちた)どういう時に気をつけるのか?「いやいや、普通そんな書き方しないでしょう」というのもあると思うので、そもそも自分がこの挙動を知るに至った経緯を書いてみる。Infinityになりうるちなみに、上記コードでMath.min(...items)のように配列をspreadして渡しているがこれは普通に便利。items)のような形で利用していたものを非常に簡素に書けている。Github@terrierscript。