題目一bash
如何理解閉包,並舉例說明閉包
閉包是在一個函數內聲明瞭另一個函數,經過另外一個函數訪問這個函數的局部變量,利用閉包能夠突破函數的做用域鏈。將函數內部的變量和方法傳遞到外部。
閉包的特性:
1.函數內再嵌套函數。
2.內部函數能夠引用外層的參數和變量
3.參數和變量不會被垃圾回收機制回收。
複製代碼
舉例說明:
var count = 10;
function add(){
var count = 0;
return function(){
count += 1;
alert(count);
}
}
var d = ddd();
d(); // 1
d(); // 2
複製代碼
JS哪些操做會形成內存泄露函數
答案:ui
1.意外的全局變量引發的內存泄漏。
function leak(){
leak = "xxx"; leak成爲一個全局變量,不會被回收。
}
2.閉包引發的內存泄漏。
3.沒有清理的DOM元素引用。
4.被遺忘的定時器或回調。
5.子元素存在引發的內存泄漏。
複製代碼
題目二spa
console.log('x' in window); var x; x = 0;code
答案:true內存
解析:預解析,var x;變量提高。打印是判斷x是否是存在在window裏 。x聲明未賦值爲undefined。window裏有x。因此爲true。最後值爲0.作用域
閉包 有權訪問另外一個函數做用域裏變量的函數string
function box(){
return function(){
return 'lee';
}
}
alert(box); //function box(){ return function(){ return 'lee'}}
alert(box()); //function(){ return 'lee'}
alert(box()()); //lee
複製代碼