プログラミング言語には、どれにも組み込みデータ構造がありますが、ふつうは言語ごとに異なります。この記事では、JavaScript で使用可能な組み込みデータ構造の一覧と、他のデータ構造の構築にも使えるように、それらがどのような性質を持ち合わせているかについて述べることにします。 言語概要では、一般的なデータ型を同様にまとめていますが、もっと他の言語との比較も行っています。

プログラミング言語には、どれにも組み込みデータ構造がありますが、ふつうは言語ごとに異なります。この記事では、JavaScript で使用可能な組み込みデータ構造の一覧と、他のデータ構造の構築にも使えるように、それらがどのような性質を持ち合わせているかについて述べることにします。 言語概要では、一般的なデータ型を同様にまとめていますが、もっと他の言語との比較も行っています。
JavaScript の数値 (Number) 型は IEEE 754 の倍精度 64ビットバイナリー形式であり、 Java や C# の double のようなものです。つまり、小数値を表しますが、格納される数値の大きさと精度には制限があります。とても簡単に説明すると、IEEE 754 の倍精度数は、3 つの部分を表すのに 64 ビットを使用します。 1 ビットの符号(sign, 正の数または負の数) 11 ビットの指数部(exponent, -1022 から 1023) 52 ビットの仮数部(mantissa, 0 と 1 の間の数値を表す) 仮数部(significand とも呼ばれる)は、実際の値を表す部分(有効数字)です。指数は、仮数を乗じるべき 2 のべき乗です。科学的記数法として考えると、次のようになります。 Number=(−1)sign⋅(1+mantissa)⋅2exp
気になったら即調べるが吉、ということで。 数値→文字列 var num = 123; // わかりやすい String(num); // "123" num.toString(10); // "123" // この用途では使ったこと無い num.toFixed() // "123" // なるほど num + ''; // "123" 文字列→数値 var str = '123'; // わかりやすい Number(str); // 123 parseInt(str, 10); // 123 parseFloat(str); // 123 // なるほど str - 0; // 123 str * 1; // 123 str / 1; // 123 // すっきりやけど知らん人は読めない +str; // 123 -(-str); // 123 ~~str; // 123 str&-1;
Planned maintenance impacting Stack Overflow and all Stack Exchange sites is scheduled for Wednesday, October 23, 2024, 9:00 PM-10:00 PM EDT (Thursday, October 24, 1:00 UTC - Thursday, October 24, 2:00 UTC). During this hour, the site will go into read-only for approximately 15 minutes and portions of the site will be temporarily unavailable. Read more here.
TypeScript、お前もか: nullやundefinedの扱いがイイカゲン過ぎ ごめんなさい。↑の記事、僕がうかつな事を書きました。TypeScriptのコンパイラにオプションを付ければ、nullとundefinedに関してキチンとチェックします。 きびしいチェックをするオプション付きなら、null型もundefined型もシングルトン型になります。 型 デフォルトでの値の集合 きびしくチェックしたときの値の集合 null {null, undefined} {null} undefined {null, undefined} {undefined} void {null, undefined} {undefined} 事の発端と顛末 TypeScriptの列挙型の挙動を知りたくて、enum OnlyOne {ONE} のサンプルを書いて試したら、nullが入っていて驚いた、というの
TypeScriptには期待してたんだけど、ガッカリだよ。 それでもまー、割と好きだけど。 *1 [追記]各所でご指摘いただきました(ありがとうございます)ように、コンパイル・オプション付きなら、シングルトン型のセマンティクスになります。この記事はほぼ言いがかりでした。事実誤認した経緯と、内容的修正を「TypeScript、僕が悪かった、ゴメン: nullやundefinedの扱いはマトモだった」に書きました。 この記事の本文自体はそのままにします。事実誤認も含めて記録が残ってもいいかな、と思うので。ただし、この記事だけを読む人が同じ誤認をしないように、何箇所かに修正記事へのリンクは入れます。[/追記] 内容: 特殊な型や値の扱い方はイイカゲンになりがち 特殊な型とは TypeScriptの基本型にnullは入らないと信じていた どんな伝統なんだよ TypeScriptにシングルトン型はな
とある投票システムを仮想したデータです。特定の投票者IDに関するデータを、日別で見たいとしましょう。 export interface Vote { voteDate: string; value: number; } export const Votes: Vote[] = [ {voteDate: '2017-11-10T12:00:12+09:00', value: 345.11 }, {voteDate: '2017-11-11T22:00:12+09:00', value: 102.34 }, {voteDate: '2017-11-12T09:12:45+09:00', value: 345.11 }, {voteDate: '2017-11-13T09:12:45+09:00', value: 312.12 }, {voteDate: '2017-11-14T09:12:45
TypeScript は静的型がウリの言語なので、もうちょっとやりようはあるのではないか。 目標:型付き正規表現 これらの問題を解決するために、キャプチャーの型の情報を埋め込んだ型 TypedRegExp<captures> を作りたい。キャプチャーの型とは、具体的には string: 通常のキャプチャー string | undefined: 後ろに ? や * がついたもの、あるいは | の一方に含まれるもの undefined: 否定先読み (?! .. ) に含まれるキャプチャー のいずれかである。例えば、 /(a)(b)?/ という正規表現のキャプチャーの型は、順に string, string | undefined となる。 captures が string, string | undefined というリストの場合(最初の例)、 r: TypedRegExp<captur
General Types Number, String, Boolean, Symbol and Object ❌ Don’t ever use the types Number, String, Boolean, Symbol, or Object These types refer to non-primitive boxed objects that are almost never used appropriately in JavaScript code.
【2017年12月18日 追記】この記事は古いTypeScript (2.0以前) を念頭に置いている。もちろん、現在のTypeScriptにも当てはまる記事はあるだろうし、TypeScript以外の言語における合併型 (union types) についてもある程度読み替えられるかもしれない。ただしElmとは “Union Types” の用法が完全に相入れないのでElmユーザーの方はお帰りください。 TypeScript 1.4について、 TypeScript 1.4.1 変更点 – Qiita という記事が目に留まった。で、その中の 直和型(Union Types) という項目に引っかかりを感じた。: なぜ引っかかりを感じたかというと、TypeScriptに今回導入されたUnion Typesと、巷に言う直和型というのは、異なる概念であるからだ。 注意:以下の話は型理論の専門家でもない
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く