JavaScript は様々な面白コードを書ける面白言語ですが、実際に利用している(?)人は初めて見たので。
Probably the weirdest valid code I've written in my life pic.twitter.com/u9HglsdOJx
— Locomalito (@Locomalito) 2019年1月7日
結果は 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
みたいな異なる型の再代入はチェックしてくれないんですよね。はい。