函數(shù)中變量的生存周期
JavaScript中函數(shù)的生存周期是不是跟C語(yǔ)言里面一樣,在函數(shù)結(jié)束之后就返還給內(nèi)存了?就是在函數(shù)之外就不能再引用和寫入函數(shù)里面的變量了?請(qǐng)舉例說(shuō)明。
JavaScript中函數(shù)的生存周期是不是跟C語(yǔ)言里面一樣,在函數(shù)結(jié)束之后就返還給內(nèi)存了?就是在函數(shù)之外就不能再引用和寫入函數(shù)里面的變量了?請(qǐng)舉例說(shuō)明。
2015-12-21
舉報(bào)
2015-12-21
Javascript和C語(yǔ)言一樣也采用詞法作用域(lexical scoping),就像你說(shuō)的一樣,這種特性叫“閉包”,每次調(diào)用函數(shù)都會(huì)創(chuàng)建新的對(duì)象來(lái)保存局部變量,并把這個(gè)對(duì)象添加到作用域鏈中,當(dāng)函數(shù)返回的時(shí)候就從作用域鏈中把這個(gè)對(duì)象銷毀,只有不存在嵌套函數(shù)或者其它指向這個(gè)函數(shù)的引用,它才會(huì)被當(dāng)成垃圾回收,這一點(diǎn)和你的認(rèn)識(shí)有點(diǎn)偏差。