函数的基本知识

函数的定义

  1. 声明式

          // 使用function这个关键字来声明一个函数
    ​      // 语法
    ​      function fn(){
    ​        console.log("一段代码")
    ​      }
    
  2. 赋值式(匿名函数)

              // 其实就是我们用var关键字来定义一个变量
              // 然后把一个函数当作值直接赋值给这个变量就可以
              // 语法:
              var fun = function(){
                  console.log("一些代码")
              }
    

函数的调用

  • 语法: 函数名()

  • 注意点

    1.    	声明式函数:调用可以在定义之前或定义之后
    2.		赋值式函数:调用只能在定义之后
    3.     定义完一个函数以后,如果没有函数调用,那么写在{}里面的代码没有意义,只有调用以后{}里面的代码才会执行   
    

函数的参数

  1. 形参和实参

    • 概念
    参数说明
    形参式上的函数定义的时候 传递的参数 当前并不知道是什么
    实参际上的函数调用的时候 传递的参数 实参是传递给形参的
    • 注意点

      参数个数说明
      实参个数等于形参个数输出正确结果
      实参个数多于形参个数只取到形参的个数
      实参个数小于形参个数多的形参定义为undefined,结果为NaN
    • 在JavaScript中,形参的默认值是undefined

函数的优点

  • 函数的优点
== 函数的几个优点
	== 代码封装,使代码更加简洁
	== 复用,在重复功能的时候直接调用就好
	== 代码执行时机,随时可以在我们想要执行的是时候调用

函数的作用域

全局作用域,局部(函数)作用域,JS 没有块级作用域(es6以前)

变量的作用域

  • 全局变量

    • 全局变量在代码的任何位置都可以使用
    • 在全局作用域下 var 声明的变量 是全局变量
    • 特殊情况下,在函数内不使用 var 声明的变量也是全局变量(不建议使用
  • 局部变量

    • 局部变量只能在该函数内部使用
    • 在函数内部 var 声明的变量是局部变量
    • 函数的形参实际上就是局部变量
  • 注意点

    • 全局变量:在任何一个地方都可以使用,只有在浏览器关闭时才会被销毁,因此比较占内存
    • 局部变量:只在函数内部使用,当其所在的代码块被执行时,会被初始化;当代码块运行结束后,就会被销毁,因此更节省内存空间

预解析

  1. 概念

    JavaScript 代码是由浏览器中的 JavaScript 解析器来执行的。JavaScript 解析器在运行 JavaScript 代码的时候分为两步:预解析和代码执行。

    • 预解析:js引擎会把js里面所有的 var 还有 function 提升到当前作用域的最前面
    • 代码执行:从上到下执行JS语句
  2. 变量预解析(变量提升)

    • 变量预解析也叫做变量提升、函数提升

      1. 变量提升

        变量提升: 变量的声明会被提升到当前作用域的最上面,变量的赋值不会提升
        
        console.log(num);  // 结果是多少?
        var num = 10;   
        // undefined
        
        
        
        //相当于执行了以下代码
        var num;		// 变量声明提升到当前作用域最上面
        console.log(num);
        num = 10;		// 变量的赋值不会提升
        
      2. 函数提升

        函数提升: 函数的声明会被提升到当前作用域的最上面,但是不会调用函数。
        
        fn();				//11
        function fn() {
            console.log('11');
        }
        

函数递归

== 在编程中,递归就是一个自己调用自己的手段

​ == 一个函数内部,调用了自己,就是递归函数

 求斐波那契数列的第n项
 function feibo(n){
            if(n==1){
                return 1;
            }else if(n==2){
                return 1;
            }else{
                return feibo(n-1)+feibo(n-2)
            }
        }
        console.log(feibo(6))        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值