天天看点

JavaScript学习笔记025-闭包0缓存计算0console属性

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>           

复制