js函数-01

本文详细介绍了JavaScript中的声明式函数和赋值式函数,包括它们的调用特点以及内存运行机制。讨论了栈内存和堆内存的区别,以及函数在内存中的创建和调用过程。同时,提到了作用域的概念,强调了变量的定义、访问和赋值规则。此外,还简单提及了递归函数及其注意事项。
摘要由CSDN通过智能技术生成

声明式函数:

function 函数名(){

}

声明式函数,可以在定义函数之前调用,也可以在定义函数之后调用

赋值式函数:

赋值式子创建函数调用的时候只能在函数之后调用
函数运行的结果可以赋值给一个变量。

var 函数名=function(){

}
//同一个文档下不要出现相同的函数名,否则下面的函数会覆盖到上面的函数。
//可以赋值使用
 function sums(num1,num2){//参数 形式参数
            document.write(num1+num2);
        }
        sums(100,200);//实际参数
        sums(50,60);
        sums(1,9);
        alert(sums(666,888));//underfined 因为sums仅仅是打印
        //返回值,没有将结果给到我们

内存的运行机制:

    内存分为:栈内存、堆内存
    栈内存--存放基本数据类型,函数名在栈内存
    堆内存--存放复杂数据类型、引用数据类型,函数体在堆内存
    函数定义阶段
    第一步,先在堆内存中开辟空间
    第二步,把函数体内的代码原样复制到内存空间内,我们写代码,写在硬盘上。
    第三步:把内存的地址 赋值给栈内存的函数名
    函数:声明函数,调用函数---声明式函数、赋值式函数
    --函数调用阶段(熟练记忆):
    按照函数名存的地址找到对应的函数体
    先判断栈内存中是否有这个变量
    如果存在这个变量,也会判断,你这里面存储的是否是一个函数体
    在调用栈内存开辟一个新的函数执行空间
    在执行空间内,给形参赋值
    对函数体内的代码进行预解析
    对函数体内的代码,执行一遍
    完成以后 这个执行空间被销毁或者理解为空间被收回

作用域:

<script>
        //全局作用域
        //一个html打开这就是一个全局作用域
        //=>window(了解)
        //局部作用域 私有作用域
        //只有函数才有if while do while for他们都没有局部作用域
        //作用域的上下级关系
        //定义在那个作用域内的函数 就是那个作用域的子级作用域
        // function test(){
        //     function haha(){

        //     }
        // }
        //变量的定义
        //定义在那个作用域下 这个变量就是那个作用域的私有变量
        //只能在这个作用域下或者这个作用域的子级作用域内使用
        //不能在父级作用域使用=>
        function test(){
            var haha=666;
        }
        alert(haha)
        //变量的访问
        //首先在自己的作用域查找 如果有 那么直接使用
        //如果没有自动到父作用域查找 父作用域有 那么就使用
        //如果还没有 再往上一级 直到全局作用域 发现还没有 那么 报错
        //xx is not defined
        //变量的赋值
       //现在自己的作用域内部查找 如果有直接赋值
       //如果没有自动到父作用域查找 父作用域有 那么就使用 停止查找
       //父作用域如果没有再往上到父级 直到全局作用域 发现还没有 那么 报错
         //xx is not defined
         
        var a=10;
        var b=a;

    </script>

递归:

10!(阶乘)10以内的阶乘

function fn(num){
    if(num==1){
        return 1;
    }
    return num*fn(num-1);
}
console.log(fn(4));

注意:递归也是有限制的,不能无限次的调用自己
    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值