Water Sunlight

軽量プログラミングの文法 - JavaScript/Python

ユーザ用ツール

サイト用ツール


js:basic:variable

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
js:basic:variable [2021/09/13 11:26]
y2sunlight [数値型 Number]
js:basic:variable [2021/10/11 14:13] (現在)
tanaka [データ型]
行 63: 行 63:
   * Function --- 非データ構造である関数のための型   * Function --- 非データ構造である関数のための型
  
-これら以外に、データ値を集合として表現する ''配列''(Array)と呼ばれる構文が存在します。配列はオブジェクト型の一種ですが、本章では便宜的にデータ型として扱います。 +本章ではこれらのデータ型のうち プリミティブ型について説明し、構造型については他の章に譲ることにします。詳しくはMDNの以下の項を参照してください。
- +
-本章ではこれらのデータ型のうち プリミティブ型について説明し、構造型については他の章に譲ることにします。 +
- +
-詳しくはMDNの以下の項を参照してください。+
  
   * [[https://developer.mozilla.org/ja/docs/Web/JavaScript/Data_structures|JavaScript のデータ型とデータ構造]]   * [[https://developer.mozilla.org/ja/docs/Web/JavaScript/Data_structures|JavaScript のデータ型とデータ構造]]
行 116: 行 112:
 ==== 長整数型 BigInt ==== ==== 長整数型 BigInt ====
  
 +bigint 型は number 型で表現できる最大の数([[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER|Number.MAX_SAFE_INTEGER]])より大きな数について信頼性のある表現方法を提供します。
 +
 +BigInt のリテラルは以下の様に末尾に n をつけて表します。
 +
 +BigIntのリテラル
 +<code javascript>
 +123n
 +3.14n
 +</code>
 +
 +BigInt の使用例を以下に示します。
 +
 +<sxh javascript;title:Example>
 +let n = Number.MAX_SAFE_INTEGER;
 +
 +console.log(n);                // 9007199254740991
 +console.log(n * 10);           // 90071992547409900
 +console.log(BigInt(n) * 10n);  // 90071992547409910n
 +</sxh>
 +
 +[[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt|BigInt()]] 関数は bigint 型を生成します。この例で分かるように number 型は大きな整数の演算を行うと精度が損なわれますが、bigint 型では精度が保障されます。
 +
 +bigint 型は number 型と異なり相補的なオブジェクトは存在しません。
 +
 +<sxh javascript;title:Example>
 +let bn = 123n;
 +console.log(typeof(bn));  // bigint
 +</sxh>
 +
 +bigint 型は他の型と演算することができません。bitint 型と number 型をまぜて演算したい場合はどちらかの型に明示的に型変換する必要があります。但し、この場合、bigint 型は number 型に型変換すると精度が落ちるのは言うまでもありません。
 +
 +<sxh javascript;title:Example>
 +let bn = 123n;
 +let n = 123;
 +console.log(bn + BigInt(n)); // 246n
 +</sxh>
 +
 +\\
  
 ==== 文字列型 String ==== ==== 文字列型 String ====
  
-リテラル: +文字列は英字記号などの文字の並びのことです。JavaScriptでは文字列を扱うデータとして string 型があります。但し他の言語で見られるようなひとつの文字データを表す型(例えば C/C++ の char型は存在しません。
-  * 'Singleクォート' +
-  * "Doubleクォート" +
-  * `Backクォート`<sup>[[js:top#ECMAScript|*2015]]</sup> ・・・ テンプレート文字列(複変数展開 ${変数名} +
  
-エスケプシケンス:\n, \r, \t, \xXX(Latin-1), \uXXXX(Unicode 4桁), \u{XXXXX}(Unicode 4桁より大)+文字列型は内部的にユニコド(UTF-16)が使用されます。string 型のユニコドについては本編の「[[js:build-in:string#文字コード|JavaScript Stringオブジェクト 文字コード]]」を参照して下さい。
  
-==== 真偽値 Boolean ====+文字列リテラル 
 +<code javascript> 
 +'Hello'                    // シングルクォートで囲まれた 0 個以上の文字の並び 
 +"3.14"                     // ダブルクォートで囲まれた 0 個以上の文字の並び 
 +'name "sato"'            // 文字列中にダブルクォートのある場合はシングルクォートで囲む 
 +"I like O'Roilly's book."  // 文字列中にシングルクォートのある場合はダブルクォートで囲む 
 +</code>
  
 +テンプレートリテラル
 +<code javascript>
 +let name = 'sato';
 +let greeting = `Hello ${name}.
 +It's fine today.`;
 +</code>
  
-==== オブジェクト Object ・・・ 連想配列 ====+上例の様にバックォーで文字を囲むと文字列リテラルを表すことができます。このようにES2015<sup>[[js:top#ECMAScript|*2015]]</sup>からはPHP言語などのようなヒアドキュメント形式の文字列リテラルが使えるようになりました。この機能を[[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Template_literals|テンプレートリテラル]]と呼びます。
  
-リテラル:{x:1, y:'foo', …} 値の型任意 ※JSON形式に同じ \\ +テンプレートリテラル以下のことが出来す。
-アクセス:data.x(オブジェクト形式) たは data['x'](連想配列形式)+
  
-==== 関数 Function ====+  * 複行にまたがる文字列 
 +  * 文字列への変数の埋め込み(いわゆる変数展開)など
  
 +詳しくは[[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Template_literals|MDN]]をご覧ください。
  
 +=== エスケープシーケンス ===
  
-==== 配列 Array ・・・ 添列 ====+JavaScriptでは他の言語と同様に文字列リテラル内でバックスラッシュを使用することにより、特別な文字を表現することが出来ます。これはエスケープシーケンスと呼ばれます。
  
-リテラ['foo','bar', ・・・ ] 値の型は任意 \\ +^コード^出力^ 
-アクセス: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;title:Example> 
 +console.log("\u4f50\u85e4");  // 佐藤 
 +</sxh> 
 + 
 +=== Stringオブジェクト === 
 + 
 +JavaScriptでは string 型以外に Stringオブジェクトが存在します。例えば以下の例を見て下さい。 
 + 
 +<sxh javascript;title:Example> 
 +let s1 = "Hello"; 
 +let s2 = new String("Hello"); 
 + 
 +console.log(typeof(s1)); // string 
 +console.log(typeof(s2)); // object 
 +</sxh> 
 + 
 +ここでは、変数 s1 は string ですが s2 は Stringオブジェクトになります。string 型の変数に Stringオブジェクトのメソッドを適用すると暗黙的に string 型から Stringオブジェクトへの変換が行われます。 
 + 
 +<sxh javascript;title:Example> 
 +let s = "HELLO"; 
 +console.log(s.toLowerCase());  // hello 
 +</sxh> 
 + 
 +この例では、変数 s は string 型ですが toLowerCase() が適用される前に Stringオブジェクトへ暗黙的に変換されています。Stringオブジェクトについては本編の「[[js:build-in:string]]」を参照して下さい。 
 + 
 +=== 文字列の操作 === 
 + 
 +JavaScriptでは文字列を結合する為の演算子として、数値と同様に、+ 演算子を適用することが出来ます。 
 + 
 +<sxh javascript;title:Example> 
 +let name = "sato"; 
 +console.log('Hello + name);  // Hello sato 
 +</sxh> 
 + 
 +文字列を操作するために、JavaScriptでは様々な関数が用意されています。 
 + 
 +<sxh javascript;title:Example> 
 +let str = "こんにちは。佐藤さん。"; 
 + 
 +console.log(str.length);          // 11 
 +console.log(str.charAt(6));       // 佐 
 +console.log(str.substring(6,8));  // 佐藤 
 +</sxh> 
 + 
 +上例であげたメソッド(またはプロパティ)は Stringオブジェクトものです。先に述べたように string の変数に Stringオブジェクトのメソッド(プロパティ)を適用すると暗黙的な型変換が行われています。 
 + 
 +Stringオブジェクトに文字列を操作するための基本的な多くのメソッドが含まれています。詳しくは本編の「[[js:build-in:string]]」を参照して下さい。 
 + 
 +\\ 
 +==== 論理型 Boolean ==== 
 + 
 +論理型は論理値を表す型です。論理値は真または偽のいずれかの値となります。これは以下のリテラルで表現します。 
 + 
 +<code javascript> 
 +true  // 真 
 +false // 偽 
 +</code> 
 + 
 +例えば次の例を見て下さい 
 + 
 +<sxh javascript;title:Example> 
 +a == 1; 
 +</sxh> 
 + 
 +この式は変数 a が 1 に等しいかどうかを調べ、そうである場合は true を、そうでない場合は false を真偽値として返します。 
 + 
 +論理値は if文や while文などの制御構造で使うのが一般的です。 
 + 
 +<sxh javascript;title:Example> 
 +if (a == 1) { 
 +    b = 1; 
 +} else { 
 +    b = 2; 
 +
 +</sxh> 
 + 
 +=== Truthy と Falsy === 
 + 
 +JavaScriptでは C/C++ や PHP などと同様に if文などの条件部分の中で真偽値以外にもそれに準じた値を指定することができます。このような真偽値そちて扱われるものを Truthy(真として扱われる)または Falsy (偽として扱われる)と呼びます。 
 + 
 +以下のものは Falsy として扱われます。 
 + 
 +|Falsy|| 
 +|論理値の偽|false| 
 +|数の0|0
 +|非数(NaN)|Nan| 
 +|空の文字列|<nowiki>''</nowiki>
 +|ヌル値|null| 
 +|未定義値|undefined| 
 + 
 +これ以外のものは全て Truthy として扱われます。 
 +|Truthy|| 
 +|論理値の真|true| 
 +|数の1|1| 
 +|文字列の1|'1'
 +|文字列の0|'0'
 +|空の配列|[]
 +|空のオブジェクト|{}| 
 + 
 +文字列の'0'や空の配列も Truthy な値なので注意して下さい。 
 + 
 +\\ 
 + 
 +==== シンボル型 Symbol==== 
 + 
 +\\
  
 ==== ヌル Null ==== ==== ヌル Null ====
  
-  * 空を表する+null値は値が無いことを表す特殊な値です。考え方としては、null値はNull型の唯一の値という解釈もできます。またオブジェクト型としてオブジェクトが存在しないという意味づけをすることも出来ます。
  
 +\\
  
 ==== 未定義 Undefined ==== ==== 未定義 Undefined ====
  
-  * が未保存 +JavaScriptでは、null以外に未定義(undefined値)という特殊な値もあます。undefinedは Undefined型唯一値です。
-  * 未定義のプロパティ +
-  * 戻り値のない関数参照+
  
 +値が代入されていない変数の値は undefined値になります。例えば以下のような場合です。
 +
 +  * 未定義の変数またはプロパティ
 +  * 値が代入されていない変数
 +  * 値が返されていない関数から戻り値を受け取った場合
 +
 +<sxh javascript;title:Example>
 +let undefined_value;
 +let a = undefined_value;  // undefined値を受け取る
 +</sxh>
 +
 +\\
 +
 +
 +==== オブジェクト Object ====
 +
 +本編の[[js:object:basic|「JavaScript オブジェクトの基本」]]を参照してください。
 +
 +\\
 +
 +==== 関数 Function ====
 +
 +本編の[[js:function:basic|「JavaScript 関数の定義」]]を参照してください。
 +
 +\\
  
js/basic/variable.1631499991.txt.gz · 最終更新: 2021/09/13 11:26 by y2sunlight