zoukankan      html  css  js  c++  java
  • JS系列:函数function

    ### 函数 function
    > 在js中函数就是一个方法(一个功能体)基于这个函数,一般是为了实现某个功能。

    ```
    var total =10;
    total+=10;
    total=total/2;
    total=total.toFixed(2);//保留小数点后面2位(数字有一个方法toFixed用来保留小数点后面的位数)
    ...
    在后续的代码中,我们依然想实现相同的操作(加10除以2),需要重新编写
    //=>这样导致代码大量冗余,不利于开发,降低了开发效率。如果进行对这个功能的代码封装,后期执行即可。

    ```
    **`函数诞生的目的就是实现封装`:把实现一个功能的代码封装到一个函数中,后期想要实现这个功能,只需要把这个函数执行即可,不必要再次编写重复代码,起到了"`低耦合高内聚`(减少页面冗余代码,提高代码的重复使用率)"`的作用**

    ```javascript封装
    function fn(){
    var total=10;
    total+=10;
    total/=2; == (total=total/2)
    total=total.toFixed(2);
    console.log(total);
    }
    fn();
    fn();

    ...
    想用多少次我们就执行多少次函数即可

    ====
    ES3标准中:
    //=>创建函数
    function 函数名 ( [参数] ){
    函数体:实现功能的js代码
    }

    //=>函数执行
    函数名();

    ====
    ES6标准中:
    //=>创建函数
    let 函数名(变量名) = ([参数]) =>{
    函数体
    }
    函数名();
    例如:
    let fn=()=>{
    let total=10;
    };
    fn();
    ```

    函数作为引用数据类型中的一种,它也是按照引用地址来操作的,接下来学习函数运行机制:
    **`函数运作机制`:**
    ```
    var obj = {
    name:'前端' ,
    age:9
    };

    function fn(){
    var total=10;
    total+=10;
    total/=2; == (total=total/2)
    total=total.toFixed(2);
    console.log(total);
    }
    fn();
     
    1.函数也是引用类型,首先会开辟一个新的堆内存,把函数体中的代码当做“字符串”存储到内存中(对象向内存中存储的是键值对)
    2.把开辟的堆内存地址赋值给函数名(变量名)

    此时我们输出fn(切记不是fn())代表当前函数本身,如果我们执行fn(),这是把函数执行,所以是否加小括号是两种不同本质的操作

    【函数执行的目的】
    目的:把之前存储到堆内存的代码字符串变成真正的js代码自上向下执行,从而实现应有的功能。

    1.函数执行首先会形成一个私有的作用域(一个供代码执行的环境,也是一个栈内存)
    2.把之前在堆内存中存储的字符串复制一份过来,变成真正的js代码,在新开辟的作用域中自上而下执行
    ```
    `js中的三座大山:1.堆栈内存寄闭包 2.面向对象 3.异步编程`

    ### 函数中的参数
    > 参数是函数的入口: 当我们在函数中封装一个功能,发现一些原材料不确定,需要执行函数的时候用户传递进来才可以,此时我们基于参数的机制,提供出入口即可。

    ```
    //=>此处的参数叫形参:入口,形参是变量(n/m就是变量)

    function sum(n,m) {
    //=>n和m分别对应要求和的两个数字
    var total=0;
    total=n+m;
    console.log(total);
    }

    //=>此处函数执行传递的值是实参:实参是具体的数据值 10,20
    sum(10,20); //=>n=10,m=20
    sum(10); //=>n=10,m=underfined
    sum(); //=>n和m都是underfined
    sum(10,20,30);//=>n=10,m=20, 30没有形参变量接受
    ```
  • 相关阅读:
    教你不编程快速解析 JSON 数据
    教你在 Linux 下时光穿梭
    在Linux系统中使用Vim读写远程文件
    【高并发】如何实现亿级流量下的分布式限流?这些理论你必须掌握!!
    【高并发】高并发环境下构建缓存服务需要注意哪些问题?我和阿里P9聊了很久!
    【高并发】关于线程池,蚂蚁金服面试官问了我这些内容!!
    【高并发】关于乐观锁和悲观锁,蚂蚁金服面试官问了我这几个问题!!
    机器学习 | 简介推荐场景中的协同过滤算法,以及SVD的使用
    Python | Python初学者的自我修养,找到自己的方向
    LeetCode 86 | 链表基础,一次遍历处理链表中所有符合条件的元素
  • 原文地址:https://www.cnblogs.com/fron-tend/p/11984490.html
Copyright © 2011-2022 走看看