打好基础,查漏补缺
基础是重中之重
闭包
当内部函数被保存到外部时就形成了闭包。闭包会导致原有作用域不释放,造成内存泄漏。
内存泄漏:我的理解是内存被占用无法释放,造成能使用内存变小,所以说是内存泄漏。
function test(){
var arr = []
for (var i = 0; i < 10; i++){
arr[i] = function(){
console.log(i) // 在赋值时不会执行函数体内的内容
}
}
return arr
}
var funcArr = test()
for (var j = 0; j < 10; j++){
funcArr[j]()
}
最后输出9个10
如何输出0~9?
function test(){
var arr = []
for (var i = 0; i < 10; i++){
(function(j){
arr[j] = function(){
console.log(j) // 在赋值时不会执行函数体内的内容
}
}(i))
}
return arr
}
<!-- 小测验 -->
var x = 1
if (function f (){}){
x += typeof f
}
console.log(x)
利用闭包,实现属性私有化
function Person(name,wife){
var girlfriend = 'juan'
this.name = name
this.wife = wife
this.divorceRemarry=function(){
this.wife = girlfriend
}
this.changeGirlfriend=function(target){
girlfriend = target
}
this.sayGirlfriend=function(){
console.log(girlfriend)
}
}
var person = new Person('Hua','ying')