JavaScriptの中のvar , let , const : cheatsheet
21626 ワード
var
The
var
ステートメントはJavaScriptの変数を宣言します.window
同じ名前で.関数スコープまたはグローバルスコープ
var
グローバルスコープ内にグローバル変数を作成します.また、グローバルプロパティを作成しますwindow
同名var city = "Florence";
console.log(window.city); // "Florence"
関数の内部で宣言されると、変数はその関数にスコープされます:var city = "Florence";
function bubble() {
var city = "Siena";
console.log(city);
}
bubble(); // "Siena"
console.log(city); // "Florence"
var
宣言には、function bubble() {
city = "Siena";
console.log(city);
var city; // hoists
}
bubble(); // "Siena"
偶然のグローバル変数
任意の文なしで割り当てられた変数
var
, let
, or const
, デフォルトでグローバル変数になります.function bubble() {
city = "Siena";
console.log(window.city);
}
bubble(); // "Siena"
この動作を中和するには、strict modeを使用します."use strict";
function bubble() {
city = "Siena";
console.log(window.city);
}
bubble(); // ReferenceError: assignment to undeclared variable city
再署名可能で再宣言可能な
で宣言された変数
var
後で再割り当てすることができます.再宣言の例function bubble() {
var city = "Florence";
var city = "Siena";
console.log(city);
}
bubble(); // "Siena"
再署名の例:function bubble() {
var city = "Siena";
city = "Florence";
console.log(city);
}
bubble(); // "Florence"
レット
The
let
ステートメントはJavaScriptの変数を宣言します.window
. ブロックスコープ
と宣言された変数
let
上の任意のグローバルプロパティを作成しませんwindow
:let city = "Florence";
console.log(window.city); // undefined
関数の内部で宣言されると、変数はその関数にスコープされます:let city = "Florence";
function bubble() {
let city = "Siena";
console.log(city);
}
bubble(); // "Siena"
console.log(city); // "Florence"
ブロック内で宣言されると、変数はそのブロックにスコープされます.ブロックステートメントの例let city = "Florence";
{
let city = "Siena";
console.log(city); // "Siena";
}
console.log(city); // "Florence"
例if
ブロックlet city = "Florence";
if (true) {
let city = "Siena";
console.log(city); // "Siena";
}
console.log(city); // "Florence"
var
代わりに、ブロックは気にしません.var city = "Florence";
{
var city = "Siena";
console.log(city); // "Siena";
}
console.log(window.city); // "Siena"
一時的なデッドゾーン
let
宣言はhoistingすることになっていますが、一時的なデッドゾーンは以下のようになります.function bubble() {
city = "Siena";
console.log(city); // TDZ
let city;
}
bubble();
// ReferenceError: can't access lexical declaration 'city' before initialization
一時的なデッドゾーンはアクセスを妨げるlet
初期化前の宣言.別の例function bubble() {
console.log(city); // TDZ
let city = "Siena";
}
bubble();
// ReferenceError: can't access lexical declaration 'city' before initialization
両方の例では例外は同じであることが分かります:時間的なデッドゾーンが蹴られたという証拠.トピックの更なるリソースTemporal dead zone demystified .
再署名可能で、再宣言できない
で宣言された変数
let
再宣言できません.スロー宣言の例function bubble() {
let city = "Siena";
let city = "Florence";
console.log(city);
}
bubble(); // SyntaxError: redeclaration of let city
妥当な再割り当ての例function bubble() {
let city = "Siena";
city = "Florence";
console.log(city);
}
bubble(); // "Florence"
コンスト
The
const
ステートメントはJavaScriptの変数を宣言します.window
. ブロックスコープ
と宣言された変数
const
上の任意のグローバルプロパティを作成しませんwindow
:const city = "Florence";
console.log(window.city); // undefined
関数の内部で宣言されると、変数はその関数にスコープされます:const city = "Florence";
function bubble() {
const city = "Siena";
console.log(city);
}
bubble(); // "Siena"
console.log(city); // "Florence"
ブロック内で宣言されると、変数はそのブロックにスコープされます.ブロックステートメントの例{}
:const city = "Florence";
{
const city = "Siena";
console.log(city); // "Siena";
}
console.log(city); // "Florence"
例if
ブロックconst city = "Florence";
if (true) {
const city = "Siena";
console.log(city); // "Siena";
}
console.log(city); // "Florence"
一時的なデッドゾーン
const
宣言はhoistingすることになっていますが、一時的なデッドゾーンは以下のようになります.function bubble() {
console.log(city);
const city = "Siena";
}
bubble();
// ReferenceError: can't access lexical declaration 'city' before initialization
再説明できない、再宣言できない
で宣言された変数
const
再宣言できません.再宣言の例throws :function bubble() {
const city = "Siena";
const city = "Florence";
console.log(city);
}
bubble(); // SyntaxError: redeclaration of const city
再割り当ての例を示します.function bubble() {
const city = "Siena";
city = "Florence";
console.log(city);
}
bubble(); // TypeError: invalid assignment to const 'city'
Reference
この問題について(JavaScriptの中のvar , let , const : cheatsheet), 我々は、より多くの情報をここで見つけました https://dev.to/valentinogagliardi/var-let-and-const-in-javascript-a-cheatsheet-14kテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol