這是我踩過的大坑澎现,印象很深,希望大家以后繞過此坑押赊。
引用變量(對象饺藤,數(shù)組這些玩意)是內(nèi)存中的堆區(qū),值變量(String,Number,Boolean這些玩意)是內(nèi)存中的棧區(qū)流礁。
什么是堆棧涕俗?不說抽象的,看的也累神帅,舉個例子:
棧就是你自己的東西再姑,你想咋折騰都行
堆就是你借別人的東西用,弄壞了找御,別人會來干你元镀,哈哈就這么理解吧~
比如 let a = 1; let b = a; b就是你自己的了,想干嘛干嘛霎桅,不影響a,因為數(shù)字是值變量
但是數(shù)組就不行了 栖疑,let a = [1, 2, 3], let b = a, 但是這個b是別人的東西,不能亂來滔驶,不信你 b.push(4)試試遇革,你發(fā)現(xiàn)a就變成[1,2,3,4]了,寫完你就會發(fā)現(xiàn)地上多了一塊舒膚佳瓜浸。嘿嘿~~
當(dāng)然也有解決辦法澳淑,想讓數(shù)組變成自己的,用slice()方法就可以了插佛,let b = a.slice();就ok杠巡,b隨便你玩,不怕身后一陣涼雇寇。