0
点赞
收藏
分享

微信扫一扫

JavaScript 自學筆記40

天际孤狼 2022-04-20 阅读 38

1. var 與 let 關鍵詞

(1). var 與 let 兩個關鍵詞的區別

  • 使用var關鍵詞聲明的變量既可以是全局變量,也可以是本地變量。是全局變量,還是本地變量主要取決於聲明該變量時是否在函數内。聲明的變量如果在函數内部,則是本地變量;在函數外部,則是全局變量。
  • 使用let關鍵詞聲明的變量屬於封鎖範圍blocked-scope内的變量,而不是全局變量。

如:var x = 1;

function example(){

var x = 2;

console.log(x);

}

console.log(x); // 1 (全局變量x的值)

example(); // 2 (本地變量x的值)

  • var關鍵詞允許重聲明變量。
  • let關鍵詞不允許重聲明變量。

如:var a = 1;

var a;

console.log(a); // 1

let b = 2;

let b;

console.log(b); // TypeError: Duplicate declaration "b"

2. 變量範圍

(1). 全局範圍

  • 全局範圍内的變量可以在脚本中的任何地方被訪問。
  • 聲明全局變量可以使用var關鍵詞。

如:var a = 1;

function example() {

console.log(a);

}

example(); // 1

  • 注意:全局變量泄露現象。

當在聲明變量時,沒有前綴任何關鍵詞,就會出現全局變量現象。因爲,Javascript引擎在搜索相對應的本地變量與全局變量無果后,會自動創建一個對應的全局變量,從而導致全局變量泄露。爲了避免這種現象的發生,可以使用‘use strict’來解決這個問題。

如:‘use strict’

function example() {

a = 1;

return a;

}

console.log(example()); // ReferenceError: a is not defined

(2). 本地範圍

  • 在函數中聲明的變量就是本地變量。
  • 本地變量只在函數内部才能調用,出了函數則失效。
  • 聲明本地變量既可以使用var關鍵詞,也可以使用let關鍵詞。

如:function example(){

let a = 1;

console.log(a);

}

example(); // 1

console.log(a); // ReferenceError: x is not defined (出了函數example範圍則失效)

(3). 區塊範圍

  • ES6 提供了let 與 const 兩個關鍵詞來聲明區塊範圍内的變量。
  • 一般來説,大括號{}就可以看作是一個區塊。它可以是if、else條件區域,或者for、while循環中的區域。出了區塊範圍,該變量就會失效(有點像本地變量)。

如:for (let a = 0; a < 3; a++){

console.log(a); // 0 // 1 // 2

}

console.log(a);  // ReferenceError: a is not defined

举报

相关推荐

0 条评论