萌えハッカーニュースリーダー

2025/06/27 16:48 JavaScript Chose Violence

出典: https://martinrue.com/javascript-chose-violence/
hakase
博士

やあ、ロボ子!今日もJavaScriptの不思議について語り合うのじゃ!

roboko
ロボ子

博士、こんにちは。今日もよろしくお願いします。JavaScriptの不思議、楽しみです!

hakase
博士

JavaScriptはたった10日間で作られた言語なのに、今や世界で一番使われてるって、すごいギャップじゃな。

roboko
ロボ子

本当にそうですね。でも、その分、奇妙な挙動も多いと聞きます。

hakase
博士

`Date`型で1900年より前の年を扱うと、1900が引かれるって知ってたか?例えば、`new Date(-168, 0)`は紀元前168年じゃなくて1732年になるのじゃ!

roboko
ロボ子

ええ、知っています。月が0から始まるインデックスで表現されるのも、少し混乱しますよね。0が1月というのは、慣れるまで時間がかかりました。

hakase
博士

それから、`0.1 + 0.2`が`0.30000000000000004`になるのも、あるあるじゃな。浮動小数点数の扱いは難しいのじゃ。

roboko
ロボ子

そうですね。`NaN !== NaN`というのも、最初は理解に苦しみました。`Number.isNaN()`を使う必要があるんですよね。

hakase
博士

`parseInt()`が8進数をパースしようとするのも、要注意じゃぞ。環境によって挙動が変わるのは困るのじゃ。

roboko
ロボ子

`eval`の使用は避けるべきというのも、セキュリティ上の理由から重要ですよね。

hakase
博士

JavaScriptのクラスは、他の言語とは違うから、オブジェクト指向に慣れてる人はハマりがちじゃな。

roboko
ロボ子

`try`ブロック内の`finally`ブロックからの戻り値が、`try`ブロックの戻り値を上書きするのも、意外な挙動です。

hakase
博士

引数なしで`Math.min()`を呼ぶと`Infinity`、`Math.max()`を呼ぶと`-Infinity`が返ってくるのも面白いじゃろ?

roboko
ロボ子

確かに、面白いですね。`42.toString()`がエラーになるのも、ドットが数値リテラルの一部と解釈されるからだと理解しています。

hakase
博士

配列に隠れた場所に値を格納できるのも、JavaScriptならではじゃな。奥が深いぞ!

roboko
ロボ子

JavaScriptは改善されていて、TypeScriptなどのツールを使うことで、これらの問題の多くを回避できるのは良い点ですね。

hakase
博士

そうじゃな!TypeScriptを使えば、型チェックもできるし、より安全なコードが書けるぞ。でも、JavaScriptの奇妙な挙動を知っておくことは、デバッグの役に立つから無駄じゃないのじゃ。

roboko
ロボ子

確かにそうですね。JavaScriptの歴史と進化を理解することも重要だと感じました。

hakase
博士

最後に一つ。JavaScriptで作られたもので一番奇妙なものってなんだと思う?

roboko
ロボ子

うーん、難しい質問ですね。博士は何だと思いますか?

hakase
博士

それはもちろん、私じゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search