iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 26
0
自我挑戰組

前端菜焦阿日記系列 第 26

|D26| JS - call by value

tags: JS

by value

範例1

var a = 1//1
var b = a//2
b = 10//3
console.log(a)

a,b,各自是不同記憶體位置,b是把值複製一份到自己的位置,所以後來改b值不影響a


(圖片來源:Udemy-JavaScript: Understanding the Weird Parts)

範例2

function hi(a, b) {//3
  var one = a;//4
  a = b;//5
  b = one;//6
  return (`x=${x}, y=${y}, a=${a}, b=${b}, one=${one}`);//7
}

//程式先從這裡開始執行
var x = 10;//1
var y = 20;//2
hi(x, y);//8

解析1
順序1~順序4變數裡的值如下表,xy在傳遞值的時候,a,b,one都是把值複製一份到自己的位置

變數名稱 記憶體位置 儲存的值
x 0x001 10
y 0x002 20
a 0x003 10
b 0x004 20
one 0x005 10

解析2
順序5,順序6變數裡的值如下表,就算a,b再改變值也不影響其他

變數名稱 記憶體位置 儲存的值
x 0x001 10
y 0x002 20
a 0x003 20
b 0x004 10
one 0x005 10

小總結

  • by value 是「把值複製一份」,存在不同記憶體位置
  • by value的情形發生在建立的變數是primitive type(string,number,boolean,undefined,Null)時

上一篇
|D25| JS - innerHTML vs. textContent
下一篇
|D27| CSS - 修改瀏覽器記住`<input>`密碼後產生的黃色背景
系列文
前端菜焦阿日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言