JavaScript 自學筆記40

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值