11.JavaScript-函数(下)

JS函数精讲

函数(下)

6.函数形参默认值

格式:
function getSum(a = 默认值,b = 默认值){}
注意点:
在ES6之前可以通过逻辑运算符来给形参指定默认值;
在逻辑或运算中,如果参与运算的不是布尔类型,返回值有一个特点
格式:条件A || 条件B
如果条件A成立,那么就返回条件A;
如果条件A不成立,无论条件B成不成立,都会返回条件B.

function getSum(a,b){
//在ES6之前可以通过逻辑运算符来给形参指定默认值
//在逻辑或运算中,如果参与运算的不是布尔类型,返回值有一个特点
//格式:条件A || 条件B
//如果条件A成立,那么就返回条件A;
//如果条件A不成立,无论条件B成不成立,都会返回条件B.
	a = a || "omg";
	b = b || "OMG";
	consloe.log(a,b);
}
getSum();
//从ES6开始,可以直接在形参后面通过 = 指定默认值
//还可以从其它函数中获取
function getSum(a = "omg",b = getDefault()){
	console.log(a,b);
}
getSum(123,"abc");
//getSum();
function getDefault(){
	return "xxx";
}

7.函数作为参数和返回值

  • 由于JavaScript中的函数也是一种数据类型, 所以函数也可以作为参数和返回值使用
  • 函数作为其他函数参数
  • 函数作为其他函数返回值

8.匿名函数

什么是匿名函数?
匿名函数就是没有名称的函数.
注意点:
不可以只定义不使用.
应用场景:

  • 作为其他函数的参数;
  • 作为其他参数的返回值;
  • 作为一个立即执行的函数.
//有名称的函数
/*
function say(){
	console.log("hello world");
}
let say = function(){
	console.log("hello world");
}
*/
//没有名字的函数
function(){
	console.log("hello world");
}
//作为其他函数的参数
function test(fn) {//let fn = say;
        fn();
    }
test(function () {
        console.log("hello world");
    });
//作为其他参数的返回值
function test() {
        return function () {
            console.log("hello world");
        }
    }
let res = test();
    res();
//作为一个立即执行的函数
//注意点:如果想让匿名函数立即执行,那么必须使用圆括号将函数的定义包裹起来才可以
 (function () {
        console.log("hello world");
    })();

9.箭头函数

  • 什么是箭头函数? 箭头函数是ES6中新增的一种定义函数的格式,目的是为了简化定义函数的代码.
    let arr = new Array();
    let arr = [];
  • 在ES6之前如何定义函数?
    function 函数名称(形参列表){
    需要封装的代码;
    }
    let 函数名称 = function(形参列表){
    需要封装的代码;
    }
  • ES6开始如何定义函数?
    let 函数名称 = (形参列表) =>{
    需要封装的代码;
    }
  • 注意点
    在箭头函数中如果只有一个形参,那么()可以省略;
    在箭头函数中如果{}中只有一句代码,那么{}也可以省略
/*function say(){
	console.log("hello world");
}
say();*/

/*let say = () =>{
	console.log("hello world");
}
say();*/

/*function say(name){
	console.log("hello" + name);
}
say("wyy");*/

let say = name =>console.log("hello" + name);
say("wyy");

10.递归函数

什么是递归函数?
递归函数就是在函数中自己调用自己,我们就称之为递归函数;
递归函数在一定程度上可以实现循环的功能;

function login(){
      //1.接收用户输入的密码
      let pwd = prompt("请输入密码");
      //2.判断密码是否正确
      if(pwd !== "123456");{
        login();
      }
      //3.输出欢迎回来
      alert("欢迎回来");
    }

回溯
请添加图片描述
注意点:
在实际使用中,登录函数不建议使用递归来写,如果一直输入错误,就会开辟很多的内存空间.

11.函数中变量作用域

  • 在JavaScript中{}外面的作用域,我们称之为全局作用域;
  • 在JavaScript中函数后面{}中的作用域,我们称之为局部作用域;
  • 在ES6中只要{}没有和函数结合在一起,那么就是块级作用域;
  • 块级作用域和局部作用域的区别:
    1.在块级作用域中通过var定义的变量是全局变量;
    2.在局部作用域中通过var定义的变量是局部变量;
  • 无论是在块级作用域中还是局部作用域,省略变量前面的let或者var就会变成一个全局变量.
{
	//块级作用域
}
if(false){
	//块级作用域
}
while(false){
	//块级作用域
}
for(::){
	//块级作用域
}
do{
	//块级作用域
}while(false);
switch(){
	//块级作用域
}
function say(){
	//局部作用域
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值