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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章