このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
js:basic:variable [2021/09/13 12:58] tanaka [長整数型 BigInt] |
js:basic:variable [2021/10/11 14:13] (現在) tanaka [データ型] |
||
---|---|---|---|
行 63: | 行 63: | ||
* Function --- 非データ構造である関数のための型 | * Function --- 非データ構造である関数のための型 | ||
- | これら以外に、データ値を集合として表現する '' | + | 本章ではこれらのデータ型のうち プリミティブ型について説明し、構造型については他の章に譲ることにします。詳しくはMDNの以下の項を参照してください。 |
- | + | ||
- | 本章ではこれらのデータ型のうち プリミティブ型について説明し、構造型については他の章に譲ることにします。 | + | |
- | + | ||
- | 詳しくはMDNの以下の項を参照してください。 | + | |
* [[https:// | * [[https:// | ||
行 157: | 行 153: | ||
==== 文字列型 String ==== | ==== 文字列型 String ==== | ||
- | リテラル: | + | 文字列は英数字記号などの文字の並びのことです。JavaScriptでは文字列を扱うデータとして string 型があります。但し、他の言語で見られるようなひとつの文字データを表す型(例えば C/C++ の char型)は存在しません。 |
- | * ' | + | |
- | * " | + | |
- | * `Backクォート`< | + | |
- | エスケープシーケンス:\n, | + | 文字列型は内部的にユニコード(UTF-16)が使用されます。string 型のユニコードについては本編の「[[js: |
- | ==== 真偽値 Boolean ==== | + | 文字列リテラル |
+ | <code javascript> | ||
+ | ' | ||
+ | " | ||
+ | ' | ||
+ | "I like O' | ||
+ | </ | ||
+ | テンプレートリテラル | ||
+ | <code javascript> | ||
+ | let name = ' | ||
+ | let greeting = `Hello ${name}. | ||
+ | It's fine today.`; | ||
+ | </ | ||
- | ==== オブジェクト | + | 上例の様にバッククォートで文字列を囲むと文字列リテラルを表すことができます。このようにES2015< |
- | リテラル:{x:1, y:' | + | テンプレートリテラルでは以下のことが出来ます。 |
- | アクセス:data.x(オブジェクト形式) | + | |
- | ==== 関数 Function ==== | + | * 複数行にまたがる文字列 |
+ | * 文字列への変数の埋め込み(いわゆる変数展開)など | ||
+ | 詳しくは[[https:// | ||
+ | === エスケープシーケンス === | ||
- | ==== 配列 Array ・・・ 添字配列 ==== | + | JavaScriptでは他の言語と同様に文字列リテラル内でバックスラッシュを使用することにより、特別な文字を表現することが出来ます。これはエスケープシーケンスと呼ばれます。 |
- | リテラル:['foo',' | + | ^コード^出力^ |
- | アクセス:data[0], data[0][1] | + | |\n|改行| |
+ | |\t|水平タブ| | ||
+ | |\' | ||
+ | |\" | ||
+ | |\777|3桁の8進数| | ||
+ | |\x41|2桁の16進数| | ||
+ | |\u9ad8|最大4桁の16進数で、UTF-16のコードポイント(U+0000 ~ U+ffff)を表す| | ||
+ | |||
+ | UTF-16のコードポイントを使った例を以下に示します。 | ||
+ | |||
+ | <sxh javascript; | ||
+ | console.log(" | ||
+ | </ | ||
+ | |||
+ | === Stringオブジェクト === | ||
+ | |||
+ | JavaScriptでは string 型以外に Stringオブジェクトが存在します。例えば以下の例を見て下さい。 | ||
+ | |||
+ | <sxh javascript; | ||
+ | let s1 = " | ||
+ | let s2 = new String(" | ||
+ | |||
+ | console.log(typeof(s1)); | ||
+ | console.log(typeof(s2)); | ||
+ | </ | ||
+ | |||
+ | ここでは、変数 s1 は string ですが s2 は Stringオブジェクトになります。string 型の変数に Stringオブジェクトのメソッドを適用すると暗黙的に string 型から Stringオブジェクトへの変換が行われます。 | ||
+ | |||
+ | <sxh javascript; | ||
+ | let s = " | ||
+ | console.log(s.toLowerCase()); | ||
+ | </ | ||
+ | |||
+ | この例では、変数 s は string 型ですが toLowerCase() が適用される前に Stringオブジェクトへ暗黙的に変換されています。Stringオブジェクトについては本編の「[[js: | ||
+ | |||
+ | === 文字列の操作 === | ||
+ | |||
+ | JavaScriptでは文字列を結合する為の演算子として、数値と同様に、+ 演算子を適用することが出来ます。 | ||
+ | |||
+ | <sxh javascript; | ||
+ | let name = " | ||
+ | console.log('Hello ' | ||
+ | </ | ||
+ | |||
+ | 文字列を操作するために、JavaScriptでは様々な関数が用意されています。 | ||
+ | |||
+ | <sxh javascript; | ||
+ | let str = " | ||
+ | |||
+ | console.log(str.length); | ||
+ | console.log(str.charAt(6)); | ||
+ | console.log(str.substring(6,8)); // 佐藤 | ||
+ | </ | ||
+ | |||
+ | 上例であげたメソッド(またはプロパティ)は Stringオブジェクトのものです。先に述べたように string | ||
+ | |||
+ | Stringオブジェクトには文字列を操作するための基本的な多くのメソッドが含まれています。詳しくは本編の「[[js: | ||
+ | |||
+ | \\ | ||
+ | ==== 論理型 Boolean ==== | ||
+ | |||
+ | 論理型は論理値を表す型です。論理値は真または偽のいずれかの値となります。これは以下のリテラルで表現します。 | ||
+ | |||
+ | <code javascript> | ||
+ | true // 真 | ||
+ | false // 偽 | ||
+ | </ | ||
+ | |||
+ | 例えば次の例を見て下さい | ||
+ | |||
+ | <sxh javascript; | ||
+ | a == 1; | ||
+ | </ | ||
+ | |||
+ | この式は変数 a が 1 に等しいかどうかを調べ、そうである場合は true を、そうでない場合は false を真偽値として返します。 | ||
+ | |||
+ | 論理値は if文や while文などの制御構造で使うのが一般的です。 | ||
+ | |||
+ | <sxh javascript; | ||
+ | if (a == 1) { | ||
+ | b = 1; | ||
+ | } else { | ||
+ | b = 2; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Truthy と Falsy === | ||
+ | |||
+ | JavaScriptでは C/C++ や PHP などと同様に if文などの条件部分の中で真偽値以外にもそれに準じた値を指定することができます。このような真偽値そちて扱われるものを Truthy(真として扱われる)または Falsy (偽として扱われる)と呼びます。 | ||
+ | |||
+ | 以下のものは Falsy として扱われます。 | ||
+ | |||
+ | |Falsy|| | ||
+ | |論理値の偽|false| | ||
+ | |数の0|0| | ||
+ | |非数(NaN)|Nan| | ||
+ | |空の文字列|< | ||
+ | |ヌル値|null| | ||
+ | |未定義値|undefined| | ||
+ | |||
+ | これ以外のものは全て Truthy として扱われます。 | ||
+ | |Truthy|| | ||
+ | |論理値の真|true| | ||
+ | |数の1|1| | ||
+ | |文字列の1|' | ||
+ | |文字列の0|' | ||
+ | |空の配列|[]| | ||
+ | |空のオブジェクト|{}| | ||
+ | |||
+ | 文字列の' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== シンボル型 Symbol==== | ||
+ | |||
+ | \\ | ||
==== ヌル Null ==== | ==== ヌル Null ==== | ||
- | * 空を表現する | + | null値は値が無いことを表す特殊な値です。考え方としては、null値はNull型の唯一の値という解釈もできます。またオブジェクト型としてオブジェクトが存在しないという意味づけをすることも出来ます。 |
+ | \\ | ||
==== 未定義 Undefined ==== | ==== 未定義 Undefined ==== | ||
- | * 値が未保存 | + | JavaScriptでは、null値以外に未定義(undefined値)という特殊な値もあります。undefined値は Undefined型の唯一の値です。 |
- | * 未定義のプロパティ | + | |
- | * 戻り値のない関数の参照 | + | |
+ | 値が代入されていない変数の値は undefined値になります。例えば以下のような場合です。 | ||
+ | |||
+ | * 未定義の変数またはプロパティ | ||
+ | * 値が代入されていない変数 | ||
+ | * 値が返されていない関数から戻り値を受け取った場合 | ||
+ | |||
+ | <sxh javascript; | ||
+ | let undefined_value; | ||
+ | let a = undefined_value; | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | |||
+ | ==== オブジェクト Object ==== | ||
+ | |||
+ | 本編の[[js: | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 関数 Function ==== | ||
+ | |||
+ | 本編の[[js: | ||
+ | |||
+ | \\ | ||