データ型と変数LOGIN

データ型と変数

データ型

コンピュータはその名前が示すように、数学的な計算を行うことができる機械であるため、コンピュータプログラムは当然さまざまな数値を扱うことができます。ただし、コンピュータは数値だけでなく、テキスト、グラフィックス、オーディオ、ビデオ、Web ページなどのさまざまなデータを処理できます。データが異なれば、異なるデータ型の定義が必要になります。 JavaScript では次のデータ型が定義されています:

Number

JavaScript では整数と浮動小数点数が区別されず、次のデータ型が有効です:

123; // Integer 1230.456; / 浮動小数点数 0.4561.2345e3; // 科学的表記法は 1.2345x1000 を表します。これは 1234.5-99 に相当します。 // 結果が計算できない場合、NaN は無限大を表します。 / Infinity は無限大を表し、JavaScript の Number で表現できる最大値を超える場合は Infinity と表現します

コンピューターでは 2 進数を使用するため、整数を表すには 16 進数を使用した方が便利な場合があります。 0x および 0 ~ 9、a ~ f は、たとえば、0xff00、0xa5b4c3d2 などを意味し、10 進数で表現された値とまったく同じです。

Number は四則演算を直接実行できます。ルールは数学と一致しています:

1 + 2; // 3(1 + 2) * 5 / 2; // 7.52 / 0; // Infinity0 / 0; // NaN10 % 3; // 110.5 % 3; // 1.5

% は剰余演算であることに注意してください。

文字列

文字列は、「abc」、「xyz」など、一重引用符 ' または二重引用符 " で囲まれたテキストです。 '' または "" 自体は単なる表現方法であることに注意してください。は文字列の一部ではありません。したがって、文字列 'abc' には a、b、c の 3 つの文字しかありません。

ブール値の式は、ブール代数の式とまったく同じです。 value には true と false のみが含まれます。true と false を直接使用してブール値を表すことも、ブール演算を通じて計算することもできます。 // これは true 値です。 false; // これは false 値です 2 > 1; // これは true 値です 2 >= 3; すべてが true の場合のみ、これは AND 演算です。 && 演算の結果は true です:

tru​​e && true; // この && ステートメントは truetrue && false; // この && ステートメントは falsefalse と評価されます && true && false; // この && ステートメントは false と評価されます

||演算は、そのうちの 1 つが true であり、演算結果が true である限り、OR 演算です。

false || このステートメントは falsetrue と評価されます。 || ステートメントは truefalse と評価されます || このステートメントは true と評価されます

! 演算は true を false に、false を true に変える単項演算子です。 // 結果は true! ) ; // 結果は true です


ブール値は、次のような条件判断でよく使用されます:

var age = 15;if (age >= 18) {
    alert('adult');
} else {
    alert('teenager');
}

比較演算子

数値を比較する場合、比較演算子を通じてブール値を取得できます:

2 > 5; // false5 >= 2; // true7 == 7; // true

実際、JavaScript ではあらゆるデータ型の比較が可能です:

false == 0; // truefalse === 0; // false

等価演算子 == に特に注意してください。 JavaScript が設計されたとき、2 つの比較演算子がありました。 1 つ目は == 比較で、多くの場合、非常に奇妙な結果が得られます。 2 つ目は == です。 = 比較の場合、データ型の自動変換は行われません。データ型が一致しない場合は false が返されます。

JavaScript の設計上の欠陥のため、== 比較を使用せず、常に === 比較に固執してください。

もう 1 つの例外は、特別な Number NaN がそれ自体を含む他のすべての値と等しくないことです:

NaN === NaN; // false

NaN を決定する唯一の方法は isNaN() 関数を使用することです:

isNaN(NaN); // true


最後に、浮動小数点数の等価比較に注意してください:

1 / 3 === (1 - 2 / 3) // false


; JavaScript の設計上の欠陥。コンピューターは無限に繰り返される小数を正確に表現できないため、浮動小数点数では演算中にエラーが発生します。 2 つの浮動小数点数が等しいかどうかを比較するには、その差の絶対値を計算して、それが特定のしきい値より小さいかどうかを確認するだけです:

Math.abs(1 / 3 - (1 - 2 / 3)) < ; 0.0000001; // true


null は「空」の値を表します。これは 0 とは異なり、空の文字列 '' は長さ 0 の文字列を表します。 、nullは「null」を表します。

他の言語でも、JavaScript と同様の null の表現があります。たとえば、Java では null が使用され、Swift では nil が使用され、Python では None が使用されます。ただし、JavaScript には、「未定義」を意味する null に似た undefine もあります。


JavaScript の設計者は、空の値を表すために null を使用し、未定義の値を表すために unknown を使用することを望んでいます。これが役に立たないことは事実が証明しており、この 2 つの違いはほとんど重要ではありません。ほとんどの場合、null を使用する必要があります。 unknown は、関数パラメータが渡されるかどうかを決定する場合にのみ役立ちます。

配列

配列とは、項目を順番に並べた集合であり、集合の各値を要素と呼びます。 JavaScript 配列には任意のデータ型を含めることができます。例:

[1, 2, 3.14, 'Hello', null, true];

上記の配列には 6 つの要素が含まれています。配列は [] で表され、要素は , で区切られます。

配列を作成する別の方法は、Array() 関数を使用することです:

new Array(1, 2, 3) // 配列 [1, 2, 3] を作成しました

ただし、コードの都合上、読みやすくするためにそのため、[] を直接使用することを強くお勧めします。

配列の要素にはインデックスによってアクセスできます。インデックスの開始値は 0 であることに注意してください:

var arr = [1, 2, 3.14, 'Hello', null, true];
arr[0]; // 返回索引为0的元素,即1arr[5]; // 返回索引为5的元素,即truearr[6]; // 索引超出了范围,返回undefined

Objects


JavaScript オブジェクトは、キーと値の順序付けされていないコレクションです。例:

var person = {
    name: 'Bob',
    age: 20,
    tags: ['js', 'web', 'mobile'],
    city: 'Beijing',
    hasCar: true,
    zipcode: null};

JavaScript オブジェクトのキーはすべて文字列型であり、値は任意のデータ型にすることができます。上記の person オブジェクトは合計 6 つのキーと値のペアを定義しており、それぞれがオブジェクトの属性とも呼ばれます。たとえば、person の name 属性は「Bob」、zipcode 属性は null です。

オブジェクトのプロパティを取得するには、オブジェクト変数を使用します。 プロパティ名: // 'Bob'person.zipcode; // null


変数の概念は基本的に次のとおりです。これは、中学校の代数学の方程式の変数と同じです。ただし、コンピューター プログラムでは、変数は数値だけでなく、任意のデータ型を使用できる点が異なります。

JavaScriptでは変数は変数名で表され、英語の大文字と小文字、数字、$、_の組み合わせであり、数字で始めることはできません。変数名に、if、while などの JavaScript キーワードを使用することはできません。変数を宣言するには、var ステートメントを使用します。例:

var a; // 変数 a が宣言され、a の値は未定義です var $b = 1; // 変数 $b が宣言され、値がは $b に割り当てられます。 $ b の値は 1var s_007 = '007'; // s_007 は文字列です var = true; // 答えはブール値です truevar t = null; t is null

変数名には中国語も使えますが、困らないようにしてください。

JavaScript では、変数に値を割り当てるには等号 = を使用します。変数には任意のデータ型を割り当てることができます。同じ変数を繰り返し割り当てることも、異なる型の変数にすることもできます。ただし、var を使用して宣言できるのは 1 回のみであることに注意してください。このように、変数自体の型が固定されていない言語を動的言語といい、これに対応する言語を静的言語といいます。静的言語では、変数を定義するときに変数の型を指定する必要があります。値を割り当てるときに型が一致しない場合は、エラーが報告されます。たとえば、Java は静的言語であり、代入ステートメントは次のとおりです:

int a = 123; // a は整数型変数であり、型は int a = "ABC" で宣言されます。整数変数に文字列を割り当てることはできません

このため、静的言語と比較して動的言語はより柔軟です。

代入ステートメントの等号を数学の等号と同一視しないでください。たとえば、次のコード:

var a = 123; // a的值是整数123a = 'ABC'; // a变为字符串

x = x + 2 を数学的に理解しても、それはいずれにせよ真ではありません。プログラムでは、代入ステートメントはまず右辺の式 x + 2 を計算し、結果 12 を取得します。そしてそれを変数 x に代入します。前回の x の値は 10 だったので、再代入後の x の値は 12 になります。

strict モード

JavaScript 設計の開始時に、初心者が学習しやすいように、変数を宣言するために var を使用することは必須ではありません。この設計エラーは重大な結果をもたらします。変数が var 宣言なしで使用されると、その変数は自動的にグローバル変数として宣言されます:

var x = 10;
x = x + 2;

同じページ上の異なる JavaScript ファイルで、var が使用されていない場合、両方の場合に次のようになります。変数 i がたまたま使用されていると、変数 i は相互に影響を及ぼし、デバッグが困難な誤った結果が生成されます。

var を使用して宣言された変数は、グローバル変数ではありません。そのスコープは、変数が宣言された関数本体に限定されます (関数の概念については後で説明します)。さまざまな機能体。

JavaScript のこの重大な設計上の欠陥を修正するために、ECMA はその後の仕様で厳密モードを導入しました。変数を宣言するために var を使用せずに変数を使用すると、厳密モードで実行される JavaScript コードは強制的に変数を宣言します。操作ミス。

厳密モードを有効にする方法は、JavaScript コードの最初の行に次のように記述することです:

'use strict';

これは文字列です。厳密モードをサポートしていないブラウザでは、文字列ステートメントとして実行されます。厳密モードをサポートするブラウザでは、厳密モードで JavaScript を実行できるようになります。

ブラウザが厳密モードをサポートできるかどうかをテストするには:

'use strict';
// ブラウザが厳密モードをサポートしている場合、
// 次のコードは ReferenceError エラーを報告します:

i = 10; // i现在是全局变量
abc = 'Hello, world';
alert(abc);


次のセクション
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title> RunJS 演示代码 </title> <script> var ck = function(){ var x = prompt ("输入数据: ", ""); alert(x); } </script> </head> <body> <button onclick="ck();"> 按钮 </button> </body> </html>
コースウェア