javascript 初识函数

189 阅读3分钟

函数:一个处理事情的方法

    1,创建函数:把实现某个功能的代码封装在一起

          function 函数名(形参1,...){

                     //=>函数体:实现具体功能的代码

           }

     2,执行函数:让函数执行,从而实现具体的功能

            函数名(实参1,...);

            函数名(实参1,...);

            ......

函数的意义在于封装:把实现某一个功能的代码封装在一起,后期在想实现这个功能,只需要执行函数即可,不需要重新编写这些代码了“低耦合、高内聚”

function 洗衣机(){
   水+洗衣液+揉+拧......
}

例如:洗衣机

1,生产洗衣机

     -  把洗衣服的操作集成在一起

     -  相当于一个函数:函数的目的就是把实现一个功能的代码进行封装,以后再想实现这个功能,我们只需要执行方法即可,无需再把代码写一遍 =>“低耦合、高内聚”:减少页面中 的冗余代码,提高代码的重复使用率

2,让洗衣机运行

     -  执行函数

     -  函数两部分:定义函数、执行函数(只定义函数是没有用的,只有把函数执行,才能起到对应的作用)

普通的写法(重复代码)

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); // 2020年03月07日
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); // 12-18 00:00
<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <meta http-equiv="X-UA-Compatible" content="ie=edge" />    <title>DOM</title>  </head>  <body>    <script>      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); // 2020年03月07日      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); // 12-18 00:00    </script>  </body></html>

函数写法

// 创建一个函数(创建一个洗衣机):把时间格式化的操作全部封装成一个函数,代码统一封装起来
function formatTime(time, template = '{0}年{1}月{2}日 {3}时{4}分{5}秒') {
let timeAry = time.match(/\d+/g);
return template.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:0:00';
console.log(formatTime(time1, '{0}年{1}月{2}日'));
console.log(formatTime(time2, '{1}-{2} {3}:{4}'));
console.log(formatTime(time1));
<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <meta http-equiv="X-UA-Compatible" content="ie=edge" />    <title>DOM</title>  </head>  <body>    <script>      //   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); // 20200307日      //   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); // 12-18 00:00      // 创建一个函数(创建一个洗衣机):把时间格式化的操作全部封装成一个函数,代码统一封装起来      function formatTime(time, template = '{0}年{1}月{2}日 {3}时{4}分{5}秒') {        let timeAry = time.match(/\d+/g);        return template.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:0:00';      console.log(formatTime(time1, '{0}年{1}月{2}日'));      console.log(formatTime(time2, '{1}-{2} {3}:{4}'));      console.log(formatTime(time1));    </script>  </body></html>

项目中,发现一个功能要重新运行两次及两次以上,此时我们就把这个功能封装成为一个函数,以后再想实现这个功能,直接把函数执行即可

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(10); // => x = 10 y = undefined 定义了形参,但是执行的时候不给传递实参,则形参默认值undefined NaN
<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <meta http-equiv="X-UA-Compatible" content="ie=edge" />    <title>DOM</title>  </head>  <body>    <script>      function sum(x, y) {        //创建函数的时候,并不知道要求哪两个数字的和,此时可以定义形参变量        // => x和y就是形参变量        let total = x + y;        console.log(total);      }      sum(10, 20); // => x = 10 y = 20 是实参 (给形参变量传递的具体值)      sum(10); // => x = 10 y = undefined 定义了形参,但是执行的时候不给传递实参,则形参默认值undefined  NaN    </script>  </body></html>