Java Script可以直接修改函數(shù)的形參嗎甲抖?

最近公司有一個項目出現(xiàn)了bug讓我去解決,發(fā)現(xiàn)之前的同事直接在函數(shù)里面修改了形參導致的問題那么Java Script可以直接修改函數(shù)的形參嗎心铃?

我們看一下下面的幾個例子准谚。

var a = 10;
function fn(a) {
  a = 20;
  console.log(a, arguments[0]); // 20 20
}
fn(a)
console.log(a)  // 10

變量a沒有被修改

var param = {
  name: 'Jack',
  age: '18',
}
function fn(param){
  param.name = "Lucy"
}
fn(param);
console.log(param.name) // Lucy

param.name被修改了。

這里面涉及到深克隆的問題去扣,Javascript數(shù)據(jù)類型分為基本數(shù)據(jù)類型(Number柱衔,String,Boolean愉棱,Undefined唆铐,Null)和引用數(shù)據(jù)類型(Object,Array奔滑,F(xiàn)unction)艾岂。基本數(shù)據(jù)類型的值存放在棧中朋其,將一個基本數(shù)據(jù)類型賦值給一個變量就是將他的值復制了一份王浴,引用數(shù)據(jù)類型的鏈接地址存放在棧中連接地址指向堆中的值,將引用類型復制一份其實是將他的鏈接賦值給新的變量兩個變量指向同一個值令宿。

再來看看forEach和map會不會修改原數(shù)據(jù)叼耙。

var student = [
  {
    name: 'Jack',
    age: '18',
  },
  {
    name: 'Lucy',
    age: '20',
  },
]
student.forEach((item) => { item.age = 25 })
console.log(student);
// { name: 'Jack',  age: '25', },
// { name: 'Lucy', age: '25', },
student.map((item) => { item.age = 30 })
console.log(student);
// { name: 'Jack',  age: '30', },
// { name: 'Lucy', age: '30', },

forEach和map的定義區(qū)別就是forEact沒有返回值map有返回值,forEach會修改原數(shù)據(jù)這道不奇怪粒没,奇怪的是map也修改了原數(shù)據(jù)這和map的設計思想不太一樣筛婉,這應該算是js的一種缺陷,在實際應用中使用map就是不想修改原數(shù)據(jù)因為map會返回一個新數(shù)組。如果不想原數(shù)據(jù)被改變可以使用這種方法爽撒。

const results = student.map((item) => ({ ...item, age: 30 }))
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末入蛆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子硕勿,更是在濱河造成了極大的恐慌哨毁,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件源武,死亡現(xiàn)場離奇詭異扼褪,居然都是意外死亡,警方通過查閱死者的電腦和手機粱栖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門话浇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闹究,你說我怎么就攤上這事幔崖。” “怎么了渣淤?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵赏寇,是天一觀的道長。 經(jīng)常有香客問我价认,道長嗅定,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任刻伊,我火速辦了婚禮露戒,結果婚禮上,老公的妹妹穿的比我還像新娘捶箱。我一直安慰自己,他們只是感情好动漾,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布丁屎。 她就那樣靜靜地躺著,像睡著了一般旱眯。 火紅的嫁衣襯著肌膚如雪晨川。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天删豺,我揣著相機與錄音共虑,去河邊找鬼。 笑死呀页,一個胖子當著我的面吹牛妈拌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蓬蝶,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼尘分,長吁一口氣:“原來是場噩夢啊……” “哼猜惋!你這毒婦竟也來了?” 一聲冷哼從身側響起培愁,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤著摔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后定续,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谍咆,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年私股,在試婚紗的時候發(fā)現(xiàn)自己被綠了卧波。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡庇茫,死狀恐怖港粱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旦签,我是刑警寧澤查坪,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宁炫,受9級特大地震影響偿曙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜羔巢,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一望忆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竿秆,春花似錦启摄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匪燕,卻和暖如春蕾羊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帽驯。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工龟再, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尼变。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓利凑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子截碴,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容