`
dyllove98
  • 浏览: 1379209 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:38218
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:78433
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:131597
社区版块
存档分类
最新评论

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";    
};

 

总结:

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

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

 

 

 

1
6
分享到:
评论
1 楼 ricoyu 2013-06-06  
你讲的我都了解,但通过你的文章, 了解到一个新的概念,function declaration hoisting

相关推荐

    javascript函数声明和函数表达式区别分析

    本文向大家展示了javascript中函数声明和函数表达式的概念及区别,介绍的非常全面,也很详尽,这里推荐给大家

    浅谈javascript 函数表达式和函数声明的区别

    javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数可以在函数声明之前调用,...

    浅析javascript中函数声明和函数表达式的区别

    javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数可以在函数声明之前调用,...

    JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同

    函数表达式和函数声明 在ECMAScript中,创建函数的最常用的两个方法是函数表达式和函数声明,两者期间的区别是有点晕,因为ECMA规范只明确了一点:函数声明必须带有标示符(Identifier)(就是大家常说的函数名称)...

    JavaScript中函数声明与函数表达式的区别详解

    在ECMAScript中,有两个最常用的创建函数对象的方法,即使用函数表达式或者使用函数声明。对此,ECMAScript规范明确了一点,即是,即函数声明 必须始终带有一个标识符(Identifier),也就是我们所说的函数名,而...

    JavaScript中的函数声明和函数表达式区别浅析

    当初只知道两种声明方式一个是函数声明一个是函数表达式,具体有什么不同没能说得很好。最近正好看到这方面的书籍,就想好好总结一番。  在ECMAScript中,有两个最常用的创建函数对象的方法,即使用函数表达式或者...

    Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式

    函数声明 function foo() {} 函数 foo 将会在整个程序执行前被 ...对于函数声明,函数的名称是必须的,而对于函数表达式而言则是可选的,因此,就出现了匿名函数表达式和命名函数表达式。如下: 函数声明: function fu

    JavaScript函数表达式详解及实例

    JavaScript函数表达式 一、序  定义函数的方式有两种:一种是函数声明,另一种就是函数表达式;  1.1 函数声明 function functionName(arg){ //函数体 }  关于函数声明,它有一个重要特征就是函数声明提升,...

    Javascript中的函数声明与函数表达式(奇技淫巧)

    在阐述为什么之前,让我们先来明确Javascript中的两个概念:函数声明和函数表达式: 先来看看什么样的是函数声明: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 再来看看什么样的是函数表达式: [Ctrl+A ...

    理解 javascript 中的函数表达式与函数声明

    解答这个问题,就需要我们理解 Javascript 中函数表达式与函数声明的概念。 函数定义带来的错误 虽然 function () {…} 看上去像是一个函数声明,但是由于没有函数名,它的本质其实是一个函数表达式。我们看下规范中...

    老生常谈JavaScript 函数表达式

    JavaScript中创建函数主要有两种方法:函数声明和函数表达式。这两种方式都有不同的适用场景。这篇笔记主要关注的是函数表达式的几大特点以及它的使用场景,下面一一描述。 主要特点 •可选的函数名称 函数名称是...

    跟我学习javascript的函数和函数表达式

    在ECMAScript中,创建函数的最常用的两个方法是函数表达式和函数声明,两者期间的区别是有点晕,因为ECMA规范只明确了一点:函数声明必须带有标示符(Identifier)(就是大家常说的函数名称),而函数表达式则可以...

    javascript 函数声明与函数表达式的区别介绍

    javascript中的函数声明与函数表达式使用比较频繁,可能很多的朋友都不知道他们之间的区别,在此为大家详细介绍下,希望对大家有所帮助

    浅析javascript函数表达式

    开始学习javascript函数表达式,仔细阅读下文。 1、一般形式的创建函数,在执行代码之前会先读取函数声明,所以可以把函数声明写在函数调用的下面: sayHi(); function sayHi(){ alert("Hi!"); } 2、...

Global site tag (gtag.js) - Google Analytics