iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0

變數都去哪了?

變數會被處存到你所依賴的環境上,說白話文就是被存在記憶體裡,在更簡單的來說,就是 JavaScript 會將他放在一個方便找尋且操作的地方,雖然大部分時間,這其實不是我們關心的事,但很多時候這個冷漠,就會將我們帶入永劫不復的深淵(物理上),因此在這邊就讓我們稍微了解一下吧!

var name = 'Me';

// 印出整個 window 物件

console.log(window);
console.log(window.name); // Me

上面的範例是將整個網站的內容列印出來(整個網站就是一個巨大的物件),可以在這之中發現我們所定義的變數,但這裡其實只是因為 var 的性質,他的定義方式與 Window 物件相互掛鉤,導致他在最外層被設定成全域變數,實際上他的實體會在記憶體當中(其實理論上全部的東西都在記憶體)。

賦值操作

有時我們會喜歡進行一些複雜的設計,此時我們將很常把一個變數賦予另一個變數,已達成我們想要的功能,而此時就會出現兩種不同的情況,我們可以在下面的範例中一探究竟。

基本型別(純值) - 傳值(pass by value)

// 賦值操作
var name = 'IFFY';
var noName = name;
name = 'No name';

console.log(noName); // IFFY
console.log(name); // No name

當我們使用六個基本型別進行變數宣告的時候,JavaScript 均會直接將數值傳過去,因此新的變數就不會有舊的資料有任何關聯了

物件型別 - 傳址(pass by reference)

// 賦值操作
var nameArray = ['Iffy', 'Alex'];
var newNameArray = nameArray;
newNameArray.push('Eva');

console.log(nameArray); //['Iffy', 'Alex', 'Eva']

但當我們使用物件型別的時候,事情就開始不一樣了,因為物件的結構可能會非常複雜,因此他會將「記憶體位置」傳送過去,因此用此方法實作之後,兩個 Array 之間會互相影響。


上一篇
JavaScript 基礎概念認知
下一篇
了解 JavaScript 基礎邏輯運算
系列文
給前端新手的圖文故事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言