zoukankan      html  css  js  c++  java
  • javascript,函数声明和函数表达式

    在javascript中有两种函数的定义法:函数声明,函数表达式。

    函数声明:

    function doSomthing(){
        return "hello";  
    }

    函数表达式:

    var f1 = function doSomthing(){
        return "hello";
    };

    函数声明和函数表达式在执行效果上是等价的,但是解析器在向执行环境中加载数据对函数声明和函数表达式的处理确实不同的。

    1.对于函数声明

      在代码开始执行之前,解析器通过函数声明提升(function declaration hoisting)的过程,读取并将函数声明添加到了执行环境中并放置于源代码树的顶部。

      因此,即使声明函数在调用代码之后,代码也能顺利执行。

    alert(doSomthing());
    
    function doSomthing(){
        return "hello";    
    }
    
    //执行OK

    2.对于函数表达式

      在一个初始化语句中生成一个函数,并用一个变量引用该函数。在这种情况下,不会经历函数声明提升过程,在执行到函数表达式所在语句之前,引用函数的变量是不会保存有对函数的引用。

     下面的代码解析器直接报错:"undefined is not a function",不会执行到函数表达式。

    alert(f1());
    
    var f1 = function doSomthing(){
        return "hello";    
    };

    总结:

    函数声明:定义和执行顺序无关。

    函数表达式:先定义后执行。

  • 相关阅读:
    linux-kernel-module
    Linux-find
    ffmpeg02
    Redhat 7使用CentOS 7的Yum网络源
    Redhat7配置yum源(本地源和网络源)
    8、源码安装
    6.存储结构与磁盘划分
    5.用户身份与文件权限
    4.Vim编辑器与Shell命令脚本
    3.管道符、重定向与环境变量
  • 原文地址:https://www.cnblogs.com/kongxianghai/p/2970649.html
Copyright © 2011-2022 走看看