抽时间整理了经常用的js闭包知识,
举例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js闭包-可访问另一个函数变量的函数</title>
</head>
<body>
<script type="text/javascript">
//用于:外部函数需要内部函数的变量时,使用js闭包。
var f = f1();
/* function f1() {
//...code
function fn() {
var info;
//.....
info = "赋值的数据";
//...
return info;
}
return fn;
}//等同于下:*/
function f1() {
//...code
return function fn() {
var info;
//.....
info = "赋值的数据";
//...
return info;
}
}
console.log(f());//赋值的数据
//优点:1、减少资源占用。2、保护和传递了变量,3、函数实现了封装。
//缺点:容易造成内存泄漏,解决方法:不用内部函数时赋值为='';
/*-------onload返回值-------*/
//es6 async/await
async function ExternalFunction() {
var images = new Image();
images.src = "xxx.png";
const getimages = () => new Promise(resolve => {
images.onload = function () {
//...
//....get valueinfo
resolve(valueinfo);
};
});
let result = await getimages();
console.log(result);//is valueinfo
}
/* window.onload=function(){
ExternalFunction();
};*/
</script>
</body>
</html>