JavaScript学习笔记025-闭包0缓存计算0consol
2018-09-12 本文已影响0人
Mr柳上原
Author:Mr.柳上原
- 付出不亚于任何的努力
- 愿我们所有的努力,都不会被生活辜负
- 不忘初心,方得始终
终于还是走到了这一天
要奔向各自的世界
一路我们曾携手并肩
用汗和泪写下永远
拿欢笑荣耀换一句誓言
夜夜在梦里相约
原生javascript结业
nodejs结业
mongodb结业
vuejs结业
该出去找工作了
这几天废寝忘食的写完两个项目
一个nodejs+mongodb结合pug的全栈博客
一个vue的类商城手机app
上传到了github上,有需要的朋友可以看看
js的学习笔记
我会上传完的
谢谢大家!
谢谢老师!
谢谢同学!
谢谢所有人!
放心去飞
勇敢地去追
追一切我们未完成地梦
放心去飞
勇敢地挥别
说好了这一次不掉眼泪
<!DOCTYPE html> <!-- 文档类型:标准html文档 -->
<html lang='en'> <!-- html根标签 翻译文字:英文 -->
<head> <!-- 网页头部 -->
<meat charset='UTF-8'/> <!-- 网页字符编码 -->
<meat name='Keywords' content='关键词1,关键词2'/>
<meat name='Description' content='网站说明'/>
<meat name='Author' content='作者'/>
<title>前端59期学员作业</title> <!-- 网页标题 -->
<link rel='stylesheet' type='text/css' href='css/css1.css'/> <!-- 外链样式表 -->
<style type='text/css'> /*内部样式表*/
</style>
</head>
<body> <!-- 网页主干:可视化区域 -->
<script>
/*
闭包:
1.函数a嵌套函数b
2.函数b使用父级函数a的变量或参数
闭包的特性:
闭包内使用的父级函数的变量或参数会永久保存
*/
// 普通函数与闭包的区别
document.onclick = function (){
let i = 0; // 每次调用都会从新赋值为变量原来的值
console.log(++ i); // 普通函数每调用一次后,值都会被回收
}
// 解决办法:定义一个全局变量,或使用闭包
let i = 0; // 在函数外面定义一个全局变量,全局变量不会被回收,长生不老
document.onclick = (function (j){
let i = 0; // 无需定义全局变量
return function ( ){
console.log(++ i, ++j); // 变量i和参数j的值永久保存
}
}(0));
// 闭包的应用
// 计算结果缓存
// 阶乘
function fn(){
let obj = {
"1!": 1
};
let b = 0;
return function ff(n){
console.log(`我会运行${b += 1}次`);
let attr = `${n}!`; // 阶乘 1! 2! 3!
if(obj[attr]){
console.log(obj);
return obj[attr];
} else {
obj[attr] = n * ff(n - 1);
return obj[attr];
}
}
}
const fy = fn();
fy(10); // 第一次为缓存,没有输出
fy(9);
// console
console.log("fy"); // 输出结果
console.count("我执行了几次:"); // 监控代码执行次数
console.dir(fn); // 输出数据类型的属性
console.time("fn");
fn(10);
console.timeEnd("fn"); // 查看中间代码执行的时间段
console.assert(1, "断言提示"); // 当第一个参数为true,后面的参数不会被输出到控制台
console.group("组一");
console.log(1);
console.log(1);
console.groupEnd("组一"); // 成组输出信息
console.group("组二");
console.groupCollapsed(1); // 输出信息加粗
console.groupEnd("组二");
</script>
</body>
</html>