前端学习(二)-----Javascript(05函数)

目录

一、函数

1.创建普通函数

2.带有参数的函数

3.带有返回值的函数

二、变量的作用域

三、函数作用域

1.全局函数

2.局部函数

3.作用域链

4.函数提升

四、递归

1.函数递归

2.递归的使用

3.案例

五.匿名函数

1.创建函数

2.匿名函数自调用

3.回调函数

六.系统函数


一、函数

        Number()/parseInt()/parseFloat()/alert()/prompt()...

        函数分为系统函数和自定义函数

        函数:function,是一个功能体,提供若干个数据,返回处理的结果,用于封装重复执行的代码

1.创建普通函数

function 函数名称(){

               函数体          //封装的重复执行的代码

}

函数名();                       //函数创建后,需要调用

2.带有参数的函数

        参数:创建函数时的参数称作形参,调用函数时的参数称作实参,实参会赋值给形参;实参和形参数量可以不相同,如果形参未被赋值则为 undefined

function 函数名称(参数列表){

        函数体

}

函数名称(参数列表);

3.带有返回值的函数

        return 用于返回函数调用后的结果

        如果函数中没有 return 或者return后不加任何的值吗,则返回结果为 undefined

        return 执行后,就会结束函数的执行

function 函数名称(参数列表){

        函数体

        return 值;

}

函数名称(参数列表);

对比 return 和 break:

        break 用于函数中,结束函数的执行

        break 用于循环或者 switch-case ,结束循环或者 switch-case 的执行

二、变量的作用域

        作用域:起作用的范围

        全局作用域:在函数外就是全局作用域,声明的变量称作全局变量,可以在任意的作用域下访问到

        函数作用域:在函数内就是函数作用域,声明的变量称作局部变量,只能在当前的作用域下访问到

        !!!在函数内,不加 var 声明的变量是全局变量。不推荐这种写法

        变量的提升:程序执行前,会将var声明的变量提升到所在作用域的最前边,只是提升声明,赋值不提升

三、函数作用域

var a=1;
function fn(){
    a=a+1;
}
fn(a);       // 2

1.全局函数

        在全局作用域下创建的函数,可以在任意作用域下访问

2.局部函数

        在函数作用域下创建的函数,只能在当前函数作用域下访问

3.作用域链

        函数作用域下,嵌套了其它的函数,形成的作用域结构;在查找变量的时候,先往当前作用域下查找,如果没有会不断的往上一级作用域下查找

4.函数提升

        程序执行前,会将函数提升到所在作用域的最前边

四、递归

1.函数递归

        在函数内部调用自身这个函数,默认是一个死循环

2.递归的使用

        要有边界条件

        需结合 return 使用

        JS运行为单线程,无法充分利用CPU内核。深层次的递归嵌套JS运算缓慢

3.案例

        猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子?

function peach(n) {

        if (n===10){

                return 1;

        }

        return (peach(n + 1) + 1) * 2;

}

console.log( peach(1) );   //1534

五.匿名函数

        没有名称的函数就是匿名函数

1.创建函数

//函数声明

function (){

}

//函数表达式方式

var fun=function(){

}

  •  函数名称:本质上就是一个变量
  • 函数名称():调用一个函数,执行函数体中的代码,得到函数的返回值

区别函数声明与函数表达式

  • 函数声明存在函数的提升,可以先写调用再写创建
  • 函数表达式只是提升变量的声明,不提升赋值,必须先写创建再写调用

2.匿名函数自调用

        创建一个函数作用域,防止全局污染

        (function(){

                //函数作用域,里面的变量都是局部变量

        })();

3.回调函数

        将函数以参数的形式传递,传递的这个函数就是回调函数

function a(){

}

function b(n){

        n();  //调用传递的函数

}

b(a);

六.系统函数

        isNaN:检测一个值是否为NaN,用于检测用户输入的值是否为数字,会隐式将数据转为数值型

        isFinite():检测一个值是否为有限值,只有无穷 (Infinity)是无限值

        eval(): 执行字符串中的表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值