Posted at

true / 2

JavaScript は様々な面白コードを書ける面白言語ですが、実際に利用している(?)人は初めて見たので。

結果は 0.5 です。はい。

しかしこの人はどういうシチュエーションでこの式を書いたのだろうか。そして何かの役に立つのだろうか。いや、立っても書きたくないな…。


蛇足

こういった暗黙の型変換による面白コードを見るたびに TypeScript へ意識が向くわけですが、手軽に型変換をチェックしたいのであれば flow でも良いのでは。

例えば次のような main.js があるとして、

// @flow

let a = true
console.log(a / 2)

以下の手順で flow をインストール&実行すれば、

> npm i --save-dev flow-bin

> npx flow init
> npx flow

こんな感じでチェックしてくれますね。

Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ main.js:3:13

Cannot perform arithmetic operation because boolean [1] is not a number.

1│ // @flow
[1] 2│ let a = true
3│ console.log(a / 2)
4│

ただ flow だと a = 1 みたいな異なる型の再代入はチェックしてくれないんですよね。はい。