JavaScript の新しい const、let、var コマンドの比較と使用法の詳細な説明

伊谢尔伦
リリース: 2017-07-22 11:37:49
オリジナル
2022 人が閲覧しました

変数を宣言するための const および let コマンドを追加しました。

宣言方法 変数昇格 スコープ 初期値 重複定義
const いいえ ブロックレベル 必須 許可されません
させてください いいえ ブロックレベル 不要 許可されない
var はい 機能レベル 不要 許可される

: const と let は最初に再利用を宣言する必要があります。変数のプロモーションをサポートしていません


console.log(c1, l1, v1);
// 报错
// Uncaught ReferenceError: c1 is not defined
 
const c1 = 'c1';
let l1 = 'l1';
var v1 = 'v1';
ログイン後にコピー

スコープ: const、ブロックレベルのスコープをサポートし、変数のカバレッジを効果的に回避します


const c21 = 'c21';
let l21 = 'l21';
var v21 = 'v21';
 
if (0.1 + 0.2 != 0.3) {
 const c21 = 'c22';
 let l21 = 'l22';
 var v21 = 'v22';
 
 console.log(c21, l21, v21);
 // 输出 c22 l22 v22
}
 
console.log(c21, l21, v21);
// 输出 c21 l21 v22
ログイン後にコピー

ブロックレベルのスコープ、内部変数は外側の層から直接アクセスできません


if (0.1 + 0.2 != 0.3) {
 const c22 = 'c22';
 let l22 = 'l22';
 var v22 = 'v22';
 
 console.log(c22, l22, v22);
 // 输出 c22 l22 v22
}
 
console.log(c22, l22, v22);
// 报错
// Uncaught ReferenceError: c22 is not defined
// 同样地, l22 is not defined
ログイン後にコピー

const は定数を定義します。定数に値を割り当てることはできませんが、定数のプロパティは最上位オブジェクト (ウィンドウ) の属性として設定できなくなりました。 )、グローバル変数の汚染を効果的に回避します


const c231 = {};
const c232 = [];
 
c231.name = 'seven';
c232.push(27);
 
console.log(c231, c232);
// 输出 {name: "seven"} [27]
 
// 禁止给对象赋值,应该使用 Object.freeze
 
const c233 = Object.freeze({});
const c234 = Object.freeze([]);
 
c233.name = 'seven';
// 普通模式下不报错
// 严格模式下报错
// Uncaught TypeError: Cannot add property name, object is not extensible
  
c234.push(27);
// 普通模式下就会报错
// Uncaught TypeError: Cannot add property 0, object is not extensible
 
console.log(c233, c234);
// 输出 {} []
ログイン後にコピー

期待に応える for ループ


const c24 = 'c24';
let l24 = 'l24';
 
console.log(c24, l24);
// 输出 c24 l24
 
console.log(window.c24, window.l24);
// 输出 undefined undefined
ログイン後にコピー

let メソッドを使用して for ループ内で変数を宣言することが期待に沿っていることがわかります。

for ループ内で毎回 let が変数を再宣言します。JavaScript エンジンは最後のループの値を記憶しているため、初期化 i は前のラウンドに基づいて計算されます。

for ループには少なくとも 2 つのレベルのスコープがあることがわかります。以下の例を見ると理解しやすくなります。


for (var i = 0; i != 3; i++) {
 setTimeout(function() {
  console.log(i);
 },10);
}
// 依次打印

for (let i = 0; i != 3; i++) {
 setTimeout(function() {
  console.log(i);
 },10);
}
// 依次打印,为啥呢
ログイン後にコピー

初期値:

const 宣言された変数には初期値が設定されている必要があり、繰り返し代入することはできません。


for (let i = 0; i != 3; i++) {
 let i = 'seven';
 console.log(i);
}
console.log('eight');
// 依次打印
seven
seven
seven
eight
ログイン後にコピー
定義の重複: const と let は繰り返しの定義をサポートしませんconst と let は変数のスコープを減らし、変数の汚染を完全に回避します。パフォーマンスを向上させた。アプリケーションで変数を宣言するには、const および let を使用することをお勧めします。

以上がJavaScript の新しい const、let、var コマンドの比較と使用法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!