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>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏恰同学骚年

《你必须知道的.NET》读书笔记:从Hello World认识IL

  IL是.NET框架中间语言(Intermediate Language)的缩写。使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但...

1032
来自专栏工科狗和生物喵

【计算机本科补全计划】图的连通性check by 并查集Union Find

具体的想法来自一篇写的超好的博客,如果底子不是很好,建议看下面这篇,当然如果可以给我顺手点个赞就更好了!!

712
来自专栏安恒网络空间安全讲武堂

赛前福利②最新2018HITB国际赛writeup

FIRST 距离“西湖论剑杯”全国大学生网络空间安全技能大赛只有9天啦! 要拿大奖、赢offer,那必须得来点赛前练习定定心啊~这不,讲武堂就拿到了2018HI...

3244
来自专栏数据科学学习手札

(数据科学学习手札31)基于Python的网络数据采集(初级篇)

  在实际的业务中,我们手头的数据往往难以满足需求,这时我们就需要利用互联网上的资源来获取更多的补充数据,但是很多情况下,有价值的数据往往是没有提供源文件的直接...

46813
来自专栏Golang语言社区

Go语言的 10 个实用技术--转

十条有用的 Go 技术   这里是我过去几年中编写的大量 Go 代码的经验总结而来的自己的最佳实践。我相信它们具有弹性的。这里的弹性是指:   某个应用需要适配...

3537
来自专栏黑泽君的专栏

java多线程、集合和IO面试题_02

1051
来自专栏java一日一条

编写难于测试的代码的5种方式

有一次,我在一个讲座上听到主持人问听众如何故意编写难于测试的代码。在场的小伙伴都惊呆了,因为没有任何人会故意写这种糟糕的代码。我记得他们甚至给不出一个好的答案。

1102
来自专栏吉浦迅科技

DAY32:阅读local Memory

1003
来自专栏极客猴

基础知识 | 使用 Python 将数据写到 CSV 文件

我们从网上爬取数据,最后一步会考虑如何存储数据。如果数据量不大,往往不会选择存储到数据库,而是选择存储到文件中,例如文本文件、CSV 文件、xls 文件等。因为...

942
来自专栏安恒网络空间安全讲武堂

网鼎杯第一场writeup

payload:/view.php?no=-6 unIon/**/select 1,table_name,3,4 from information_schema...

2122

扫码关注云+社区