概要

緑さんは Pythonista の端くれだけれども、ブログを運営しているから JavaScript も使うわけよ。言ってみればサブウェポンなわけだが、一応ある程度は使いこなせるぜ。今回はぼくのサブウェポン捌きをご覧いただく。今宵は JavaScript の数値でブチ上がろう。

 

JavaScript の数値どうなってんだよ

node -v
# --> v22.9.0 これで実験してこうぜ。

node -e 'console.info( typeof NaN )'
# --> number これはまあ笑えるレベル。 Not-a-Number なのに number っつってね。

node -e 'console.info( 1 instanceof Number )'
# --> false え?

node -e 'console.info( Number(1) instanceof Number )'
# --> false は??

node -e 'console.info( new Number(1) instanceof Number )'
# --> true

はぁ…… (JavaScript をくしゃくしゃに丸めて捨てる)。

 

じゃあ解説してこうぜ

node -e 'console.info( typeof NaN )'
# --> number
# NaN が number 型なのは仕様。まあこれはいいよ。
node -e 'console.info( 1 instanceof Number )'
# --> false
# 1 は object の Number ではなく number (プリミティブ型) なのだ。
  • オブジェクト: typeof で object って出るやつ。 Number とか String とか。
  • プリミティブ型: typeof で number, string, boolean, undefined とか出るやつ。
node -e 'console.info( typeof Number )'
# --> function
# Number は、 new なしだと、キャスト関数らしい。

node -e 'console.info( Number(1) instanceof Number )'
# --> false
node -e 'console.info( typeof Number(1) )'
# --> number
# ただのキャスト関数だから、返り値は 1 で、 number である。
node -e 'console.info( new Number(1) instanceof Number )'
# --> true
node -e 'console.info( typeof new Number(1) )'
# --> object
# new Number(1) の返り値は Number。

 

おしまい

というわけで、今回ぼくらをブチ上げたのは、 JavaScript のオブジェクトとプリミティブ型という仕様だったな。

  • Object: Number, String …
  • Primitive (原始的): number, string, boolean …

まあわかりやすくはあるか。

以下の記事からリンクされています