题目一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
复制代码