サーチ…
構文
- var foo [= value [、foo2 [、foo3 ... [、fooN]]]];
- let bar [= value [、bar2 [、foo3 ... [、barN]]]];
- const baz = value [、baz2 = value2 [、... [、bazN = valueN]]];
備考
参照:
定数の再割り当て
定数を再割当てすることはできません。
const foo = "bar";
foo = "hello";
印刷物:
Uncaught TypeError: Assignment to constant.
定数の変更
変数const
宣言すると、その値が新しい値に置き換えられなくなります。 const
は、オブジェクトの内部状態に制限を設けません。次の例は、 person
割り当てられたオブジェクトが変更されたが置き換えられないため、 const
オブジェクトのプロパティの値を変更でき、新しいプロパティを追加することもできることを示しています。
const person = {
name: "John"
};
console.log('The name of the person is', person.name);
person.name = "Steve";
console.log('The name of the person is', person.name);
person.surname = "Fox";
console.log('The name of the person is', person.name, 'and the surname is', person.surname);
結果:
The name of the person is John
The name of the person is Steve
The name of the person is Steve and the surname is Fox
この例ではperson
という定数オブジェクトを作成し、 person.name
プロパティを再割り当てして新しいperson.surname
プロパティを作成しました。
定数の宣言と初期化
定数を初期化するには、 const
キーワードを使用します。
const foo = 100;
const bar = false;
const person = { name: "John" };
const fun = function () = { /* ... */ };
const arrowFun = () => /* ... */ ;
重要
同じステートメントで定数を宣言して初期化する必要があります。
宣言
JavaScriptで変数を宣言するには、 var
、 let
またはconst
キーワードを使用するか、またはキーワードをまったく使用しない( "裸の"宣言)4つの原則があります。使用されるメソッドによって、変数の結果のスコープが決まります。また、 const
の場合は再割り当て可能です。
-
var
キーワードは、関数スコープ変数を作成します。 -
let
キーワードはブロックスコープ変数を作成します。 -
const
キーワードは、再割り当てできないブロックスコープ変数を作成します。 - 裸の宣言は、グローバル変数を作成します。
var a = 'foo'; // Function-scope
let b = 'foo'; // Block-scope
const c = 'foo'; // Block-scope & immutable reference
同時に初期化せずに定数を宣言することはできないことに注意してください。
const foo; // "Uncaught SyntaxError: Missing initializer in const declaration"
(キーワードレス変数宣言の例は、技術的な理由から上記には含まれていません。
データ型
JavaScript変数には、数値、文字列、配列、オブジェクトなど、多くのデータ型を保持できます。
// Number
var length = 16;
// String
var message = "Hello, World!";
// Array
var carNames = ['Chevrolet', 'Nissan', 'BMW'];
// Object
var person = {
firstName: "John",
lastName: "Doe"
};
JavaScriptには動的な型があります。つまり、同じ変数をさまざまな型として使用できます。
var a; // a is undefined
var a = 5; // a is a Number
var a = "John"; // a is a String
未定義
値のない宣言された変数の値はundefined
var a;
console.log(a); // logs: undefined
宣言されていない変数の値を取得しようとすると、ReferenceErrorが返されます。しかし、宣言されていない変数とユニット化された変数の両方の型は "未定義"です。
var a;
console.log(typeof a === "undefined"); // logs: true
console.log(typeof variableDoesNotExist === "undefined"); // logs: true
割り当て
以前に宣言した変数に値を代入するには、代入演算子=
使用します。
a = 6;
b = "Foo";
独立した宣言と代入の代わりに、1つのステートメントで両方のステップを実行することができます。
var a = 6;
let b = "Foo";
この構文では、グローバル変数はキーワードなしで宣言できます。直後に割当てのない裸の変数を宣言すると、通訳者はグローバル宣言を区別できなくなりa;
変数への参照からa;
。
c = 5;
c = "Now the value is a String.";
myNewGlobal; // ReferenceError
ただし、上記の構文は一般的には推奨されず、strict-modeに準拠していないことに注意してください。これはプログラマが文からlet
またはvar
キーワードを誤って削除し、誤って変数を認識せずにグローバル名前空間に作成するという事態を避けるためです。これは、グローバルな名前空間とライブラリとの矛盾とスクリプトの適切な機能を汚染する可能性があります。したがって、グローバル変数は、インテントが明示的に記述されるように、ウィンドウオブジェクトのコンテキストでvar
キーワードを使用して宣言して初期化する必要があります。
さらに、各宣言(およびオプションの値の代入)をカンマで区切って、一度に複数の変数を宣言することもできます。この構文を使用すると、varおよびletキーワードは、各文の最初に1回だけ使用する必要があります。
globalA = "1", globalB = "2";
let x, y = 5;
var person = 'John Doe',
foo,
age = 14,
date = new Date();
前のコードスニペットでは、宣言と代入式が出現する順序( var a, b, c = 2, d;
)は関係ありません。あなたは自由に混在させることができます。
関数宣言は、変数を効果的に作成します。
数学演算と代入
インクリメントby
var a = 9,
b = 3;
b += a;
b
は12になります
これは機能的には同じです
b = b + a;
減少分
var a = 9,
b = 3;
b -= a;
b
は6になります
これは機能的には同じです
b = b - a;
乗算する
var a = 5,
b = 3;
b *= a;
b
は15になります
これは機能的には同じです
b = b * a;
除算
var a = 3,
b = 15;
b /= a;
b
は5になります
これは機能的には同じです
b = b / a;
の力に育てられた
var a = 3,
b = 15;
b **= a;
b
は3375になります
これは機能的には同じです
b = b ** a;