JavaScript 中的几种函数声明方式小记录

前言

最近在学 JavaScript 对其的函数声明的几种方式有很大的兴趣, 思考了一些东西, 所以就写下这篇博客来记录, 可以说 函数是 JavaScript 中最有趣的东西了. 据说 Brendan Eich 在创造它时, 比较中意的是函数式, 但他当时的公司在于 sun 合作, 所以希望他把 JavaScript 整的像 Java 一点, 并取名为 JavaScript. 但与 Java 并没有什么关系. 在其风格上看, 个人认为更像是 C 风格的函数式脚本语言.
JavaScript 中所有的一切都是对象, Object 是一个基础类型, 而 Function 类型是引用 Object 类型继承而来的, 函数作为 Function 类型的实例, 也是对象.


众所周知, 在 JavaScript 中有三种方式来定义函数, 但其实是四种, 另一种是使用命名函数表达式来定义函数, 这种方式很少用到.

  • 第一种: 函数声明的方式来定义

    这种方式和其他语言也没多大区别, 和其他语言的形式一样, 使最常见的一种方式.
    其语法格式如下:

    1
    2
    3
    function 函数名(形参1, 形参2, ...) {
    //函数体
    }

    例:

    1
    2
    3
    function add(num1, num2) {
    return num1 + num2;
    }
  • 第二种: 函数表达式来定义

    其语法格式如下:

    1
    2
    3
    var 变量名 = function(形参1, 形参2, ...) {
    //函数体
    };

    例:

    1
    2
    3
    var add = function(num1, num2) {
    return num1 + num2;
    };

    这种方式需要在结尾加上一个分号, 因为我们相当于把一个函数赋给一个变量, 也就是相当于一条表达式语句. 并且在 function 后没有再跟函数名, 这种情况下所创建的函数又称匿名函数(拉达母函数). 通过赋给的这个变量名即可调用这个函数.

关于函数声明和函数表达式的区别个人暂时认为主要有两种:

  1. 解释器对二者的区别

    JavaScript有一个特性就是:变量声明和函数声明会被提前(hoist)到作用域的顶端,所以通过函数声明创建的函数,什么时候都可以被调用,但是通过函数表达式创建的函数,只能在创建时才能调用.

PS: 最近接入了 gitTalk , 也可以手动提交 issues 进行讨论,我会在第一时间进行回复。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×