Ajax 板


LINE

请问一下 虽然不知道assign值能不能说是pass by reference 以下是我用firebug测试的code http://imgur.com/6v6bfIY 一开始的疑问是array(object)应该是pass by reference 所以b是指向a 在我a = [5]; 之後b应该也要变成[5] 但印出来却仍然是原本的 同理下面的object也是 然後我找到这个 http://stackoverflow.com/questions/13104494/does-javascript-pass-by-reference 所以是一般会是pass by reference 但是直接改变他的reference时又会变成pass by value? 请问这要怎麽解释会比较好呀? 感觉关键是那句「copy of a reference」 但是我不懂这句话的精髓是想要表达什麽 PS. 其实一开始是在写function互传才发现这件事 一直以为function是object所以应该就是pass by reference function A() {...} function B() {...} var C = B; 之後又B = A; 然後在执行C却仍然是B而没有变A 才发现我观念根本错了lolllll 求救各位大神Orz --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.1.136
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1463486497.A.CB5.html
1F:→ mmis1000: 一律都是传值(闭包例外),只是你可以传上面有属性的物件 05/17 20:04
2F:→ mmis1000: a.x = n 这句的意思是 修改 a 变数所持有的物件上的 x 05/17 20:05
3F:→ mmis1000: 属性,但你在 a = {} 的同时,就已经把整个物件替换掉了 05/17 20:06
4F:→ mmis1000: 所以在这时候,a 跟 b早就是不同东西了 05/17 20:06
5F:→ mmis1000: 这时你在去修改 a ,当然不会反映在 b 上 05/17 20:07
嗯嗯我知道闭包是传reference 但是大大的意思是 b=a 这样也会是传值? 传值不就是复制一份自己的了吗? 那更改a.x = n 为什麽也会连带更改到b.x ?
6F:推 eight0: 在 JavaScript 中 [] 和 {} 会制造一个新物件 05/17 20:33
7F:→ eight0: 所以 a = [5] 是制造一个新 array 後让 a 指向它 05/17 20:37
喔喔所以意思是 一开始 a = [1,2,3] a存的是指向[1,2,3]的位址 然後b = a 是传值 但是是传a指向的位址(这应该就是我上面题的那个copy of reference所要表达的?) 所以後来 a = [5] a会变成指向[5]的位址 而b仍然是存着指向[1,2,3]的位址? 是这个意思吗? 突然有种豁然开朗的感觉m~_~m ※ 编辑: aa06697 (140.116.1.136), 05/17/2016 20:48:56
8F:推 Hevak: eight0正解 05/17 20:49
9F:→ Hevak: 你a=[1,2,3]的时候,这时候会有一个物件的内容是[1,2,3], 05/17 20:49
10F:→ Hevak: 然後你会把这个对物件的参照指派给a,所以你呼叫a会拿到这 05/17 20:50
11F:→ Hevak: 个物件 05/17 20:50
12F:→ Hevak: 这时候你a[1]=1,是把数字1指派给a参照的物件的索引1,所以 05/17 20:51
13F:→ Hevak: 这时候a储存的参照还是对着原本的那个阵列 05/17 20:51
14F:→ Hevak: 但如果你再做a=[5],就是你新建立一个[5]的物件,把他的参 05/17 20:51
15F:→ Hevak: 照指派给a,所以这时候a已经遗失了对[1,2,3]的参照,a现在 05/17 20:52
16F:→ Hevak: 参照的物件是[5] 05/17 20:52
17F:→ Hevak: 你把物件指派给变数,实际上那个变数储存的是对物件的参照 05/17 20:54
18F:→ Hevak: 所以: 05/17 20:54
19F:→ Hevak: a=[1,2,3] // a现在有对一个新的[1,2,3]物件的参照 05/17 20:55
20F:→ Hevak: b=a // 你把a的参照指派给b,所以a和b都是参照第1行的物件 05/17 20:55
21F:→ Hevak: a=[5] // 现在a保存的参照变成是对一个新的[5]物件 05/17 20:55
22F:→ Hevak: //可是同时b对第1行给的[1,2,3]的参照还在 05/17 20:56
23F:→ Hevak: 其实重点就只是变数保存的是对物件的参照,这样而已,所以 05/17 20:57
24F:→ Hevak: 你在变数间互相指派,传一定是传这个参照 05/17 20:57
感谢各位 一直以为b=a传reference是 b「指向」a 再指向内容 结果根本不是.... 是传参照 现在才搞懂 错了好久啊Orzzzzzz ※ 编辑: aa06697 (140.116.1.136), 05/17/2016 21:11:23







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP