函数

2019-12-20  本文已影响0人  Red_b759

一.函数

  1. 把完成特定功能的一段代码抽象出来,使之成为程序中的一个独立实体,起个名字(函数名)。
  2. 可以在同一个程序或其他程序中多次重复使用(通过函数名调用)。
  3. 内置函数,自定义函数
  4. JS函数没有重载一说,只以函数名区分,参数的个数不同并不会影响函数,调用的时候只会执行定义的时候最后一个函数的语句。
function 函数名(参数1名字,参数2名字,……)//函数可以没有形参
{
    语句
    [return 返回值;]//函数可以没有返回值
}

二.封装函数(初级基本步骤)

  1. 写完成特定功能的代码(老老实实的把基本代码写一遍)
  2. 把完成特定功能的代码抽离出来 放到函数中 给函数起一个名字
  3. 把函数中的可变参数提取为形式参数
  4. 确定函数的返回值 return
  5. 调用函数

三.关于函数的返回值return的问题

函数的return值可以有(有的话就返回 既定的值),也可以没有(默认返回undefined);

四.函数的特点

  1. 每次调用函数 会重复执行函数的上下文(从函数中的第一一直执行到最后一行)
  2. 如果存在形式参数,函数每次执行过程中 会用 形式参数 接收对应的 实际参数
    形式参数(函数封装过程中的假设性参数 如果你传了一个值 这个值在函数中怎么运行)
    实际参数(函数在调用过程中真正传入的实际值)

五.函数的作用

  1. 使程序变得更简短而清晰
  2. 有利于程序维护
  3. 可以提高程序开发的效率
  4. 提高了代码的重用性(复用性)

六.递归

简单来说就是自己调用自己,递归需要设置结束条件(递归函数的函数体内一定需要有一个分支是不调用自身的,否则,会无休止地调用下去,引起栈溢出。)
例子:以下为n!的递归;

function fn(n){
    if(n === 1){ //必须要的结束条件,不然就是死循环了
        return 1;
    }
    return n * fn(n-1);
}
fn(3);  //6

六.全局变量和局部变量

1.局部变量

局部变量就是定义在函数内部的变量,这个变量只能在函数内部使用,即作用域范围只是函数内部,另外,形参也是局部变量。

2.全局变量

全局变量就是定义在函数外部的变量,通过关键词(var,let,const)声明的,这个变量在任何函数中都有效,即作用域范围是当前文件的任何地方。

3.作用域

就是起作用的范围。或者说有效范围。

七.全局代码处理过程

  1. 语法解析
    语法分析会在代码执行前对代码进行通篇检查,以排除一些低级错误
  2. 预编译
    预编译发生在代码执行的前一刻(分作用域)
    2.1 全局作用域的预编译
    a. 变量提升 (在代码执行的前一刻,把当前作用域中所有的全局变量的声明,提升到所有代码的最前方 没有通过关键词声明的全局变量 没有变量提升)
    b. 确定函数体(命名函数)
    2.2 局部作用域的预编译
    a. 变量提升 (在代码执行的前一刻,把当前作用域中所有的全局变量的声明,提升到所有代码的最前方 在函数中没有通过关键词声明的变量也是全局变量)
    b. 确定函数体(命名函数)
    c. 把实际参数赋值给形式参数
  3. 解释执行
上一篇 下一篇

猜你喜欢

热点阅读