此篇应该接在[第五篇-资料型别]之後介绍,因为在JavaScript中,会依不同型别而有不同的传递参数的方式。
参数传递的方式分为:
前面提到JavaScript 的资料型态分为基本型别及物件型别,而:
基本型别
时,那即是由"值"来传递,所以称为"传值"。物件型别
时,则是以"传参考"的方式做传递。先看以下范例:
这里输出的结果是true,person与person2的值完全一样,应该没有问题。
var person = '小明';
var person2 = person;
console.log(person === person2); //true
若是以下情况:
输出结果会是什麽呢?
var person = '小明';
var person2 = person;
person = '小王';
console.log(person === person2); //??
。
。
答案是false !
这里即解释到了传值的观念: (以下图例说明)
当产生person物件时,会产生一个记忆体,并将"小明"放进去;person2=person时,即会再产生一个记忆体位置并将值复制过去,person2即指向这个记忆体位置的值。
所以当person的值被改变时,并不会影响到person2的值。
先看以下范例:
这里输出的结果是true,person与person2的值完全一样,应该也没有问题。
var person = {
name : '小明'
}
var person2 = person;
console.log(person === person2);
若是以下情况:
输出结果会是什麽呢?
var person = {
name : '小明'
}
var person2 = person;
person2.name = '小王';
console.log(person.name); //小明? 小王?
。
。
答案是小王!
这里即解释到了传参考的观念: (以下图例说明)
当产生person物件时,一样会产生一个记忆体位置(并新增属性:name & 值:小明);跟传值不一样的是,当person2 = person时,person2即会指向person的记忆体位置。
所以当person的内容被改变时,person2也会跟着被改变。
像这种透过引用的方式来传递资料,接收的其实是引用的「参考」而不是值的副本时,我们通常会称作「传参考」 (pass by reference)。
参考来源:
https://ithelp.ithome.com.tw/articles/10191057
<<: Trouble with Distributed Systems (3-1) - Unreliable Clocks
>>: Day 5 Compose UI Row Layout + Position
Pipeline tags: IT铁人 Clock Cycle Time Clock Cycle T...
延续昨日 有了资料库之後再来就是想想如何登入! 登入的意思就是你输入的帐号密码都和资料库的帐号密码一...
本系列已集结成书从 0 到 Webpack:学习 Modern Web 专案的建置方式,这是一本完...
Colab连结 相信每个人在学习ML时,都会遇到超参数 Batch size 应该要设置多少才好的问...
Day 23: 174. Dungeon Game Tag:每月挑战(2021.10.02) Sou...