~~~
### 函數(function)
> 一個處理事情的方法,例如:洗衣機就是一個函數
1.生產洗衣機
- 把洗衣服的操作的集成在一起
- 相當于一個函數:函數的目的就是把實現一個功能的代碼進行封裝,
以后再想實現這個功能,我們只需要執行方法即可,
無需再把代碼寫一遍 => “低耦合、高內聚”:減少頁面中的冗余代碼,提高代碼的重復使用率
2.讓洗衣機運行
- 執行函數
- 函數兩部分:定義函數、執行函數(光定義函數是沒有用的,只有把函數執行,才能起到對應的作用)
~~~
~~~
/*
* 1.創建函數:把實現某個功能的代碼封裝在一起
* function 函數名(形參1,...){
* //=>函數體:實現具體功能的代碼
* }
*
* 2.執行函數:讓函數執行,從而實現具體的功能
* 函數名(實參1,...);
* 函數名(實參1,...);
* ...
* 函數的意義在于封裝:把實現某一個功能的代碼封裝在一起,后期再想實現這個功能,只需要執行函數即可,不需要重新編寫這些代碼了 “低耦合、高內聚”
*/
let time1 = '2020/03/07 11:37:00';
let arr = time1.match(/\d+/g);
time1 = '{0}年{1}月{2}日'.replace(/\{(\d+)\}/g, (_, num) => {
return arr[num];
});
console.log(time1);
let time2 = "1998-12-18 00:00:00"; //=>"12-18 00:00"
let arr2 = time2.match(/\d+/g);
time2 = '{1}-{2} {3}:{4}'.replace(/\{(\d+)\}/g, (_, num) => {
return arr2[num];
});
console.log(time2);
// .... */
// 創建一個函數(創建一個洗衣機):把時間格式化的操作全部封裝成為一個函數,代碼統一封裝起來
function formatTime(time, templete = "{0}年{1}月{2}日 {3}時{4}分{5}秒") {
let timeAry = time.match(/\d+/g);
return templete.replace(/\{(\d+)\}/g, (...[, $1]) => {
let time = timeAry[$1] || "00";
return time.length < 2 ? "0" + time : time;
});
}
// 執行函數(運行洗衣機)
let time1 = '2020/03/07 11:37:00';
let time2 = "1998-12-18 00:00:00";
console.log(formatTime(time1, '{0}年{1}月{2}日'));
console.log(formatTime(time2, '{1}-{2} {3}:{4}'));
console.log(formatTime(time1)); */
// 項目中,發現一個功能要重新運行兩次及兩次以上,此時我們就把這個功能封裝成為一個函數,以后再想實現這個功能,直接把函數執行即可/* // 1.創建函數
function func() {
console.log('我會玩函數了!');
}
// 2.執行函數
func();
func();
// ================================求兩個數的和
// 函數中有一個形參和實參的概念
// 形參:生產一個函數,想要實現一些功能,但是實現功能,需要的原材料不確定,需要用戶執行它的是夠給我,我才知道,此時我們就提供入口 => 形參(變量)
// 實參:執行函數的時候,給指定的入口(形參變量)傳遞的具體值(值)
function sum(x, y) {
// 創建函數的時候,并不知道要求哪兩個數字的和,此時可以定義形參變量
// =>x和y就是形參變量
let total = x + y;
console.log(total);
}
sum(10, 20); //=>x=10 y=20是實參(給形參變量傳遞的具體值)
sum(1, 10); //=>x=1 y=10
sum(10); //=>x=10 y=undefined 定義了形參,但是執行的時候不給傳遞實參,則形參默認值undefined ->NaN
~~~

- 0001.開課說明
- 0002.ECMAScript的發展歷程
- 0003.WEB2.0時代-服務器端渲染,前后端不分離
- 0004.WEB2.0時代-前后端分離模式
- 0005.大前端時代概述
- 0006.前端需要的技術棧和學習技巧
- 0007.瀏覽器
- 0008.JS的三部分組成
- 0009.JS中創建變量的6種形式
- 0010.JS中變量的命名規范
- 0011.JS中的數據類型分類
- 0012.JS中常用的幾種輸出方式
- 0013.number屬性類型詳細解讀1
- 0014.number數據類型詳細解讀2
- 0015.string數據類型詳細解讀1
- 0016.string數據類型詳細解讀2
- 0017.boolean數據類型詳細解讀
- 0018.object數據類型詳細解讀1
- 0019.object數據類型詳細解讀2
- 0020.談談學習
- 0021.數據類型檢測
- 0022.瀏覽器底層渲染機制(堆棧內存和數據類型區別)
- 0023.關于數據類型區別的面試題
- 0024.課后作業講解:數據類型轉換
- 0025.課后作業講解:堆棧內存處理
- 0026.課后作業講解:阿里的一道經典面試題
- 0027.JS中三種常用的判斷語句
- 0028.小實戰:開關燈特效
- 0029.FOR循環和FOR IN循環
- 0030.課后作業講解:關于循環判斷和數據轉化
- 0031.課后作業講解:關于DOM對象的深入理解
- 0032.關于元素集合的相關操作(奇偶行變色)
- 0033.課后作業講解:邏輯思維判斷題
- reset.min.css
- 0034.(復習)前四天內容的綜合復習梳理
- 0035.初窺函數:函數的作用、語法、形參
- 0036-0038.選項卡案例
- 0039.隔行變色案例:進一步強化自定義屬性編程思想
- 0040.其它作業題的講解(自定義屬性強化)
- 0041.函數創建和執行的堆棧運行機制
- 0042.函數中的形參和實參
- 0043.函數中的實參集合ARGUMENTS
- 0044.函數中的返回值RETURN
- 0045.箭頭函數和匿名函數
- 0046.兩個等于比較時候的數據類型轉換規則
- 0047.數組的基礎結構和常規操作
- 0048.數組常用方法:增刪改的五個方法
- 0049.數組常用方法:查詢、拼接、轉換為字符串
- 0050.數組常用方法:檢測是否包含、排序和迭代
- 0051.數組去重:雙FOR循環(數組塌陷和SPLICE刪除優化)
- 0052.數組去重:對象鍵值對方式(ES6中SET)
- 0053.Math數學函數對象中常用的方法
- 0054.String字符串中常用的方法
- 0055.實戰案例:時間字符串格式化
- 0056.實戰案例:queryURLParams1
- 0057.實戰案例:queryURLParams2
- 0058.實戰案例:獲取四位不重復的驗證碼
- 0059.階段作業題講解1(基礎知識)
- 0060.階段作業題講解2(實戰案例)
- 0061-0062.DOM操作中相關知識的復習
- 0063.DOM中的節點操作1
- 0064.DOM中的節點操作2
- utils
- 65.關于DOM的增刪改