JavaScript 同時宣告多個變數並賦值

admin發表於2018-12-12

JavaScript變數宣告與賦值是極為簡單與基礎的操作。

也許學習程式設計第一節課就是會涉及到變數的宣告與賦值。

裡面涉及到一些平時不會引起注意,但是又比較重要的概念。

本文首先介紹如何同時宣告多個變數並賦值,然後引出一些問題進行分析。

首先看如下程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
let webName="螞蟻部落";
let address="青島市南區";

上面分別宣告兩個變數並賦值,下面將其改造成同時宣告並賦值:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let webName="螞蟻部落",address="青島市南區";
console.log(webName);
console.log(address);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201812/12/022644n2e757f5ff7z2hmz.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

宣告方式很簡單,變數之間用逗號分隔即可,上面同時宣告兩個變數,當然還可以更多。

上面都很好理解,需要注意的地方來了,看如下程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
(function(){
  var a=b=5;
})();
console.log(b);
 請問上面用var宣告瞭幾個變數,可能不少初學者會回答宣告兩個變數a與b。
事實是錯誤的,程式碼分析如下:
(1).上述程式碼使用var只宣告瞭一個變數a。
(2).b並沒有使用var宣告,如果它也是用var宣告,那麼就無法列印出b的值,然而列印結果如下:
a:3:{s:3:\"pic\";s:43:\"portal/201812/12/022718i932459jfl2gldnn.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}
(3).可能很多朋友會說,不使用var宣告的是全域性變數,所以上面也算是同時宣告並賦值了兩個變數,其實這種說法從來都是錯誤的,只有利用var宣告的才是變數(暫且不考慮let),不使用var的b其實是全域性物件的一個屬性,也就是說為全域性物件新增了一個自定義屬性b並賦值,用如下程式碼可以證明它們之間的不同: 
[JavaScript] 純文字檢視 複製程式碼執行程式碼
var webName="螞蟻部落";
address="青島南區";
delete webName;
delete address;
console.log(webName);
console.log(address);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201812/12/022741sz3bittoq7ilg3tl.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到使用var宣告的變數沒有被刪除,不使用var的被刪除,所以程式碼會報錯。

由此可見,兩者是不同的,var宣告的是一個真正的變數,address只是window的一個自定義屬性。

相關閱讀:

(1).delete參閱JavaScript delete用法一章節。

(2).帶var與不帶var的區別參閱變數宣告帶var與不帶var的區別一章節。

(3).let參閱JavaScript let 命令一章節。

相關文章