這是我踩過的大坑,印象很深,希望大家以后繞過此坑。
引用變量(對象,數(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隨便你玩,不怕身后一陣涼。