四,JavaScript的函数 · 上

本文深入探讨JavaScript中的函数,包括其作为代码复用和模块化工具的概念,详细介绍了函数的定义和调用语法,如系统提供的函数和自定义函数。此外,还讨论了函数的本质——内存中的变量,以及赋值式、匿名和自调用函数的特性。进一步讲解了带参数和返回值的函数,阐述了预解析的概念和执行顺序。通过实例解析,帮助读者理解函数在JavaScript中的重要性和使用方式。
摘要由CSDN通过智能技术生成

一,函数的概念

函数是代码的一种工具,公式

可以用来处理重复代码,将重复代码放在一个容器中,通过调用这个容器,就能自动执行容器中的代码

函数的优点:

  1. 实现了代码的可重用性

  2. 实现了模块化编程

二,函数的语法

一般分成两种

  • 系统提供的
    • isNaN()
    • Number()
    • String()
    • parseInt()
    • parseFloat()
  • 自定义的

语法:

【定义】

        function 函数名称(){

                代码段 - 希望能重复执行的代码段

        }

【调用】        ------        让函数中的代码段执行

        函数名称()

// 定义一个函数 做一个乘法表
function fn(num) {        
        // fu 【函数名称】   定义函数
    for(var a=1; a<=num; a++) {
        for(var b=1; b<=a; b++) {
            document.write(b + '*' + a + '=' + a*b + '&nbsp;');
        }
        document.write('<br>');
    }
 document.write('<br>');
}

// 调用函数
fn(9)
fn(4)
fn(13)

三,函数的本质

  1. 函数定义:相当于定义了一个变量,且不会自动在页面中显示
  2. 函数的定义其实就是内存中开辟了一个内存空间,空间名称叫函数名称,里面的值,就是函数这段代码
  3. 函数定义跟变量的定义是一样的,只是多了一种值的类型
  4. 输出函数名称   会 把函数里面的代码给输出
  5. 检测一个函数的类型  ------  function

四,赋值式函数

var hanshu=function fn(){
    var a=1
    var b=2
    var c=a+b
    console.log(c);
}

console.log(hanshu);   // 输出:函数代码
console.log(typeof hanshu);    // 输出:function

注意:

        一旦是赋值式的函数,函数代码中的函数名称就不能在使用了

        Eg:

                hanshu()         //  正常调用

                fn()        //  fn is not defined

A.匿名函数

一般把没有设置函数名称的函数代码叫做匿名函数

var hanshu =function() {
    var a=1
    var b=2
    var c=a+b
    console.log(c);
}

console.log(hanshu);        // 函数内容
console.log(typeof hanshu);        // function
hanshu()        // 3

        

匿名函数不能独立出现(因为多行,看起来不像一个整体) ------ 除非将整个匿名函数用小括号包起来

// 例如

    (function(){
        console.log(11);
    })

    var fn = function(){
        console.log('这是fn函数');
    }
    
// 控制台输出为 
ƒ (){
    console.log(11);
}

B.自调用函数

将匿名函数用小括号包起来,后面再加小括号,就相当于这个函数被调用了,为此这个函数只能被调用一次。

(function(){
    console.log('这是fn函数');
})()

// 输出 :  这是fn函数

五,带参数的函数

定义一个函数,用来计算两个数的和
当函数代码中某些数据在多次调用时发生变化,就需要将这个数据当做是变量
最终是需要赋值的,这个变量需要放在定义函数时的小括号中
定义函数时的小括号,是在给函数中变量占位

function add(a, b) {  // a,b 为形参 ‘现在只是个空容器’
    var c = a + b
    console.log(c);
}

// 当调用函数时,给定义时的变量赋值
add(1, 2)
         // ‘这边调用函数中的 1,2 表示 实参  调用时会 将值赋值给形参’
add(3, 5)
add(5, 6)

注意:

  1. 没有实参给对应的形参赋值,形参默认就是undefined
  2. 函数一旦加上形参,就相当于隐形的,在函数内部定义了这个变量了,只是没赋值而已
  3. 当实参的数量超出形参时,超出的部分无效,​​​​​​​   
  4. 实参可以为任何值 

六, 带返回值的函数

思路:

  1. 将函数中的核心代码写好
  2. 用function将核心代码包裹
  3. 代码中哪些数据会发生变化,就把他制作成形参
  4. 判断调用函数后,需不需要得到结果,还是直接输出这个结果,如果要得到结果,需要将写下return
  5. 调用函数
function fn(a,b,c){
    var sum = a + b + C
    // 调用函数需要得到的结果需要在函数中使用return
    return sum      //  将sum返回


fn(1,2,3)
//  调用得到的这3个数和后,再去计算这个三个数的平均数

var avg  = fn(1,2,3) / 3
console.log(avg)

如果函数中写下 return后 没有返回一个结果,那调用的时候会接收到一个undefined

function fn() {
    console.log(1);

    console.log(2);
}

var res = fn()
console.log(111, res);

当函数中的return后没有值,默认返回undefined

function fn() {
    for(var i=1; i<=5; i++) {
        console.log(i);
        if(i === 3) {
        }
    }
    console.log(666);
}
var res = fn()
console.log(res);

七,预解析

(1):预解析:教我们如何看懂代码流程

(2):js 的执行过程:

                   1.解析                预解析

                   2.执行        然后,代码按照预解析的结果顺序执行)

(3)预计算就是在代码执行之前,在所有代码中找变量定义和函数定义(非赋值函数)

        找到子后,将变量的定义和函数的定义提升到所有代码的最前面

注意:

  • 当函数和变量在预解析的时候同名,会保留函数的定义,忽略变量的定义
  • 当代码报错后,后续代码不执行了
  • 不能执行的代码中,如果有变量或函数的定义,也是可以提升的
  • 能提示的是变量的定义,而不是变量的赋值
  • 赋值式的函数,叫做变量的定义,不叫定义函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值