批改状态:合格
老师批语:
function hello(c){
return c;
};
在上方的代码中c就是函数的参数,return c 就是函数的返回值
函数的参数不是一成不变的,会出现各种各样的情况
1.参数不足:在声明函数和输出是都没有赋予参数具体的值,这种情况下可以给参数一个默认值function hello(c='默认值'){
return c;
};
2.参数过多:在输出是给了一个参数很多个值function hello(c='默认值'){
return c;
};
console .log(hello(1,2,3,4));
这样的情况可以使用 … 将多个参数压缩成一个数组,然后输出function hello(...c){
return c;
};
console .log(hello(1,2,3,4));
… 这个语法在函数声明时可以将参数压缩成数组然后输出,在函数调用时可以将数组展开const a =['老师','学生','校长'];
console.log(...a);
函数的返回值默认是单值返回,但是实际的业务中有时会要求多值返回,这是后就需要将多个返回的值包装在一个容器中返回
一共有两个容器,分别是数组和对象
let f =()=>[1,2,3,4,5,6];
console.log(f());
h=()=>{a:1;b:2;};console.log(h());
在一个字符串中,出现占位符,则这个字符串为模板字符串
占位符:占位符可以是变量,插值,表达式
let username ='朱老师';// 声明模板字符串 用反引号 在esc键下面// 占位符用${} 包围console.log (`hallo ${username}`);// 10+40=50 其中50 用${10+40}表示,会计算出结果 这就叫插值console.log(`10+40=${10+40}`);// 在其中加入判断表达式// 在字面量中写入判断表达式,则可以输出结果let a =20;console.log(`${a>18?`成年`:`未成年`}`);
使用模板字面量作为参数的函数,叫做模板函数
模板函数的声明和普通函数一样,但是调用时要用模板字符串作为参数
在模板函数中必须要有两个参数
1.第一个参数是用来存储当前模板字面量中的字符串组成的数组
2.第二个参数是用来存储模板字面量中的插值列表
例如 function a (参数1,参数2){};
function a (str,...ar){console.log(str,ar);}let name='手机';let num=20;let price=55;a`名称:${name},数量:${num},单价:${price},`
代码解释 首先声明一个函数 a 是一个模板函数 里面有参数一 str(存储字符串) ar(存储字符串中的插值) …是多个参数压缩成数组
然后声明三个变量 最后调用模板函数a 将这三个变量作为插值,等待函数调用
首先在一个函数中有三种不同的变量
let d = 40;let fn = function(a,b){// a,b是参数变量// 下面的c是私有变量,只能在函数内部访问let c =30;// d 是函数外部变量:也叫自由变量return a + b+c+d;};
接下来就是闭包的形成条件
1.必须是一个父子函数
2.在子函数中调用了父函数中的参数,
达到以上两个条件,闭包形成
h = function(a){let d= function(f){// a是父函数中的参数,b是子函数中的参数return a*f;}// 在父函数中返回这个子函数return d;}console.log(h(20)(10));
fn = function(a){// 第一级函数 可以调用参数areturn function(b){// 第二级函数 可以调用参数a,breturn function(c,d){// 第三级函数,可以调用参数a,b,creturn a+b+c+d;}}}// 传入参数的方法// 使用闭包的时候,可以将函数参数调用时 的多个参数分开传入console.log(fn(10)(20)(30,40));// 上面的fn 代表一级父函数 每一个括号表示每一级函数的参数// 如果某一级函数有多个参数,就和正常的一样 用逗号隔开// 简化上面的函数fn=a=>b=>(c,d)=>a+b+c+d;console.log(fn(20)(20)(30,40));
当一个函数不需要调用外部变量的时候,这个函数就叫纯函数了
let dis= 0.75;function a(d){return d*dis;}console.log(a(50));
上面这个函数就不是一个纯函数,因为他调用了函数外的变量dis
如果要将他变成一个纯函数,只需要将这个外部变量,通过参数的方式传入函数中就行
let dis= 0.75;function a(d,dis){return d*dis;}// 将外部的参数直接转成函数的自带参数 然后调用// 调用是直接输入参数名 不用给值console.log(a(50,dis));
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号