当前位置:  开发笔记 > 编程语言 > 正文

JavaScript函数声明

如何解决《JavaScript函数声明》经验,为你挑选了2个好方法。

下面给出了某些函数声明的JavaScript代码片段吗?如果不是,有人可以概述一下它们是什么吗?

some_func = function(value) {
    // some code here
}

show:function(value){
   // some code here
}

Justin Johns.. 72

创建函数有六种方式/上下文:

1)标准声明符号(对于具有C背景的人最熟悉)

function foo() {}

所有其余的都是函数表达式:

2)作为对象文字的方法

var obj = {
    foo: function() {}
};

3)作为实例化对象的方法(每次创建都new被创建)

var Obj = function() {
    this.foo = function() {};
};

4)作为原型的方法(无论new执行多少次都只创建一次)

var Obj = function() {};
Obj.prototype.foo = function() {};

5)作为带引用的匿名函数(与#1效果相同)*

var foo = function() {};

6)作为一个立即执行的匿名函数(完全匿名)

(function() {})();

*当我看这个陈述时,我会考虑结果.因此,我并不认为这些是匿名的,因为会立即为函数创建引用,因此不再是匿名的.但对大多数人来说都是一样的.



1> Justin Johns..:

创建函数有六种方式/上下文:

1)标准声明符号(对于具有C背景的人最熟悉)

function foo() {}

所有其余的都是函数表达式:

2)作为对象文字的方法

var obj = {
    foo: function() {}
};

3)作为实例化对象的方法(每次创建都new被创建)

var Obj = function() {
    this.foo = function() {};
};

4)作为原型的方法(无论new执行多少次都只创建一次)

var Obj = function() {};
Obj.prototype.foo = function() {};

5)作为带引用的匿名函数(与#1效果相同)*

var foo = function() {};

6)作为一个立即执行的匿名函数(完全匿名)

(function() {})();

*当我看这个陈述时,我会考虑结果.因此,我并不认为这些是匿名的,因为会立即为函数创建引用,因此不再是匿名的.但对大多数人来说都是一样的.


没关系,我在这里找到答案:http://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/
建议#1和#5实际上是相同的是误导,它们是非常不同的.除了EsTeGe提供的链接外,还要检查这个SO问题的优秀答案,这个问题很好地解释了差异:http://stackoverflow.com/questions/3887408/javascript-function-declaration-and-evaluation-order

2> 小智..:

第一个是简单地创建匿名函数并将其分配给变量some_func.所以使用some_func()将调用该函数.

第二个应该是对象表示法的一部分

var obj = {
  show:function(value){
    // some code here
  }
};

所以,obj.show()将调用该函数

在这两种情况下,您都在创建匿名函数.但在第一种情况下,您只是将其分配给变量.而在第二种情况下,您将其指定为对象的成员(可能在许多其他对象中).


括号对于立即调用的函数是必需的,而不是对象文字.函数声明和函数表达式不是一回事,关键是不能立即调用函数声明.例如`(function(){})()`是一个自调用函数表达式; `function(){}`周围的括号是将其转换为函数表达式所必需的.否则,它被视为一个函数声明,缺少标识符(或者,如果提供了标识符,则下面的`()`)将是语法错误.
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有