2021-05-16

封装

函数:可以实现一定的功能

把可以实现一定功能的代码,封装成一个函数

声明函数:

1、字面量声明

书写格式: 关键字 标识符(函数名) 小括号 {代码块(函数体)}

​ function lpj () {代码块}

// 创建函数
function lpj(){
  console.log(`您当前余额为:1000元`);
}

调用函数(执行函数体)

书写格式: 函数名 小括号

lpj ()
// 调用函数
lpj();//您当前余额为:1000元
注:什么时候执行函数体,取决于什么时候调用

2、构造函数声明

书写格式:关键字 标识符 赋值符号 new Function();

let lpj = new Function();
// 创建构造函数
let f70 = new Function();
f70();
let f71 = new Function(
  console.log(123)
  );
  f71();//123
let f72 = new Function(
 "  console.log(`阿良`);"
);
f72();//阿良 

3、函数表达式(匿名函数表达式) 声明函数

书写格式:关键字 标识符 赋值符号 Function() {函数体}

let f75 = Function() {函数体}
// 函数表达式(匿名函数表达式)
let f75 = function (){
  console.log(`1234567890`);
}
  f75();//1234567890
console.log(f75.name);//f75

4、箭头函数

书写格式:(参数1,…参数n)=>{函数体}

  1. 省略function关键字
  2. 如果只有一个形参,可以省略小括号
  3. 如果函数体只有一条语句,可以省略大括号
  4. 如果函数体只有一条语句,并且需要返回这条语句的结果则省略return关键字
  5. 不可以使用arguments[在讲解DOM时,讲解什么是this]
  6. 不会把自己的this绑定到函数上[原因在讲解构造函数时讲解]
  7. 不可以用作构造函数
//箭头函数
let f74 = a =>console.log(a);//1998
f74 (1998);//传递实参1998给箭头函数f74

let f75 = () =>console.log(3);//3
f75 ();//执行箭头函数f75

let f76 = x =>x + 2;//形参加2
let f77 = f76(10);//传递实参10给形参x,并且把f76返回结果赋值给f77
console.log(f77);//输出f77的值为12

let f78 = (a,b) =>{//声明箭头函数f78,形参a,b赋值传进来的实参
    let f79 = a + b;//声明一个变量f79赋值等于形参a+b的结果(此时a=1,b=2)
    return f79;//返回变量f79的值(此时f79=3)给箭头函数f78
}
console.log(f78(1,2));//最终f78的返回值就是变量f79的值(即:3)

5、随机函数Math.random() 获取0到1的数字,但不包含0

//随机生成范围内的数字
function getRandomNum(min, max) {
    min > max ? [min, max] = [max, min] : "";//最大值与最小值的位置
    return parseInt((max - min + 1) * Math.random() + min);//拿到一个随机数
}

6、回调函数

当一个函数A提供给函数B当参数,则A 就是回调函数

应用场景:

1.数组的排序sort(会改变原数组)

let f70 = [52,9,31,19,17,63];
// 升序:a - b
let arr1 = f70.sort((a,b) => a - b);
console.log(arr1);//[ 9, 17, 19, 31, 52, 63 ]
// 降序:b - a
let arr2 = f70.sort((a,b) => b - a);
console.log(arr2);//[ 63, 52, 31, 19, 17, 9 ]

2、数组的方法

一、方法every
判断数组中的每个值,是不是都满足需求
注:所有都满足返回true,有1个不满足,则返回false
let f70 = [52,9,31,19,17,63];
let state = f70.every(a => a%2 ==0);//a是每一个值,即判断每一个值是不是偶数,有一个不是,则返回false,全都是,则返回true
console.log(state);//false
二、方法some
判断数组中的每个值,是不是都满足需求
注:只要有1个满足返回true,都不满足,才会返回false
let f70 = [52,9,31,19,17,63];
state = f70.some(a => a%2 ==0);//a是每一个值,即判断每一个值是不是偶数,有一个是则返回true,全都不是,则返回false
console.log(state);//true
三、方法filter 过滤
返回满足条件的值
注:不会改变原数组
let f70 = [52,9,30,29,18,62];
let state = f70.filter(a => a%2 ==0);
console.log(state);//[ 52, 30, 18, 62 ]
四、方法map
执行箭头函数的需求,把最终的结果,以新数组的方式返回
注:不会改变原数组
let f70 = [52,9,30,29,18,62];
let state = f70.map(a => a%2 ==0);
console.log(state);//[ true, false, true, false, true, true ]
state = f70.map(a => a-1);
console.log(state);//[ 51, 8, 29, 28, 17, 61 ]
五、方法forEach
执行箭头函数的操作,但是没有返回值
注:不会改变原数组
let f70 = [52,9,30,29,18,62];
state = f70.forEach(a => a-1);
console.log(state);//undefined
state = f70.forEach(a => {console.log(a-1);});//51,8,29,28,17,61

7、立即执行函数

IIFE: Immediately Invoked Function Eexpression

创建即调用,调用即销毁(不占用内存空间)

适用场景:关于一次性变量(例如:时间)
(function f70(){console.log("阿良");})();//阿良

函数三要素:函数名、参数、返回值

1函数名

创建函数时自定义的名称

查看函数名:函数名.name

2参数

形参(形式参数)

在函数声明的时候创建的参数

实参(实际参数)

在调用函数的时候传入的实际参数
注: 形参与实参名可以不同
形参的个数比实参多,多的形参数为undefined
实参的个数比形参多,多的实参数不会使用
//一
function aliang3(cont1,cont2,cont3,cont4){
console.log(`参数1:${cont1}`);
console.log(`参数2:${cont2}`);
console.log(`参数3:${cont3}`);
console.log(`参数4:${cont4}`);
}
aliang3("阿良","天才",18,'优秀');
//二
let inputName = "阿良";
let inputAge = 23;
let inputGender = "男";
let i = "a32s";
f70(inputName, inputAge,inputGender);//没有i
function f70(name, age, gender,i) {
  console.log(`你好,我叫${name}//阿良
  我今年${age}岁//23
  我是${gender}生
  我叫${
  i}`);//undefined
}

不定参数

书写格式: …形参
1.接收多的实参内容(以数组形式)
2.只能写在最后一个形参位置(其他位置,会报错)
function f70(a,b,...c){
  console.log(a,b,c);//1 2 [ 3, 4, 5, 6 ]
}
f70(1,2,3,4,5,6)

3返回值:

函数100%有返回值

若写了return,返回值就是return后的内容

若没写return,则返回undefined

注:renturn具备终止函数的功能
若需要返回多个值,需要return后面的内容是引用数据类型
function f70(){
  console.log(`阿良`);//阿良
  return ["al",1,null];
}
console.log(f70());//[ 'al', 1, null ]

函数的属性与方法

属性

1、函数名.arguments

arguments是函数的属性,返回所有的实参内容(键值对形式的数组)
可以类似于数组的使用方式进行值的获取(通过下标)
但此方法返回值不是数组而是类数组,不可使用数组的方法

2、函数名.length

**length**在函数中,返回的是函数形参的个数
但不统计设置默认值的形参
若第一个形参就设置了默认值,则返回0
当实参的值是undefined,相对应的形参又设置了默认值,则形参的值是默认值,而不是undefined

两者返回值如下:

//形参不设置默认
function aliang(num1, num2, num3) {
    let rest = aliang.arguments[2];
    console.log(rest);//实参内容-----9
    console.log(aliang.length);//形参个数-----3
}
aliang(3,6,9);

//形参设置默认值
function aliang(num1=2, num2, num3=8) {
    console.log(aliang.length);//形参个数-----0
}
aliang(1,3,5);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值