「这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战」 。
定义:
1.作用:
存储代码,解决代码’复用‘的问题
2.语法:
步骤(1)声明函数:是一个存储过程,在声明的时候不会执行
function 函数名() {
函数主体内容
}
步骤(2)调用函数:执行函数体代码
函数名()
a.函数一定要调用,不调用里面的内容没办法执行
b.函数一段代码在多个地方执行一次,函数是强调复用,多人共用一段代码,用一次调用一次,
c.循环是一个代码在一个地方执行多次
d.封装:把一段需要复用的代码放到函数里
3.函数参数
(1).函数参数的用法:
调用者 传值 给函数
(2).语法:
function 函数名(形参) {
函数主体内容
}
(2)调用函数:执行函数体代码
函数名(实参)
传参的本质:实参给形参赋值
(3)实参与形参
function fn(形参) {}
fn(实参);
调用函数的时候将实参传给形参
let du = function fn(x , y) {
return [x, y];
}
// 如果没有传参,就执行形参里的默认值,如果有参,就调用实参
fn();
fn(1, 2);
如果不知道用户给的值是空的还是有数字的,为了确保输出的不是undefined,有以下两种解决方案
方法一:给形参两个默认值,如果用户没有给值,函数就会自动执行默认值里的值,如果给了实参,就调用实参
let du = function fn(x = 0, y = 0) {
return [x, y];
}
fn();
fn(1, 2);
方法二:x有值,就让x=x,如果没有值,就让x=0;y同理
let du = function fn(x, y) {
x = x || 0;
y = y || 0;
return [x, y];
}
// 如果没有传参,就执行形参里的默认值,如果有参,就调用实参
fn();
fn(1, 2);
4. 分类:
(1)具名函数:申明定义了名字的函数
(2)匿名函数 没有名字的函数
5.作用域
(1)全局作用域
(2)局部作用域
(3)区块作用域
6. 函数执行的流程:
1.传参
2.执行函数体
3.返回结果给调用者
7. 函数的返回值return(重点):
(1)写法:
function fn(形参) {
函数体
return 返回者
}
fn(实参);
(2)调用返回值:
let 变量名 = 函数名( )
(3)为什么要让函数有返回值?
(1)为了方便后面被其他程序调用。
(2)执行函数后会得到结果,结果是调用者想要得到的数据
(4)函数返回值的作用:函数传递数据给调用者
(5)return的注意事项:
(1)return后面的内容不可以换行,因为return有退出函数的作用,换行的内容不会被执行
(2)return如果需要返回多个值,用数组return[返回值1,返回值2...],因为数组可以储存多个数据
(3)函数默认没有return返回值,需要有返回值写return
(4)
(a)无参无返回,
(b)有参无返回,
(c)无参,有返回。
(d)有参有返回
如果函数没有return,则默认返回给调用者undefined
如果有return,无返回值:return后面的条件不执行,返回undefined