原文地址:http://www.cnblogs.com/phpzxh/archive/2009/09/16/1568137.html【侵删】

在javascript中函数的申明方式有四种 下面代码中一句代表了一种

1 function func1(…){…} 
2 var func2=function(…){…}; 
3 var func3=function func4(…){…}; 
4 var func5=new Function();

第一种就是我们常见的函数申明方式,函数名为func1。第二种和第三种的区别是第二种是匿名函数,而第三种不是。第四种用的是对象申明的方式,因为javascript每个函数就是一个对象。

1 //这两种声明是等价的
2  function func1(a,b){
3   return a+b;
4 }
5 var func1 = new Function("a","b","return a+b");

匿名函数和有名字函数在javascript中是有点区别的我们看代码

1  //声明一个匿名函数
2  func1();
3 var func1 = function(){
4      alter(1);
5 }

运行火狐
firbug中说func1未定义
看看另外一种方式

1 func1();
2 function func1(){
3   alert(1);
4 }

由此可见,尽管JavaScript是一门解释型的语言,但它会在进行函数调用时,检查整个
代码中是否存在相应的函数定义,这个函数名只有是通过 function funcName()形式定义的才有效,而不能是匿名函数。

匿名函数的申名方式有个好处就是防止函数重命名。在javascript还有匿名函数可以在申明之后立即调用,代码如下。

1 var i=function(a,b){
2     return a+b;
3 }(1,2);

这里i=3是返回值而不是函数,这是因为()的优先级比=高
在jquery中的插件扩展就是这样实现的,我们来看看代码。


 1 (function($){
 2  
 3 $.fn.select = function(select) {
 4     if (select == undefined) select = true;
 5     return this.each(function() { 
 6         var t = this.type;
 7         if (t == 'checkbox' || t == 'radio')
 8             this.checked = select;
 9         else if (this.tagName.toLowerCase() == 'option') {
10             var $sel = $(this).parent('select');
11             if (select && $sel[0] && $sel[0].type == 'select-one') {
12                 // deselect all other options
13                 $sel.find('option').select(false);
14             }
15             this.selected = select;
16         }
17     });
18 };
19  
20 })(jquery)

注意直接这样写
function(a,b){
return a+b;
}(1,2)
是会报语法错误的。

【转载】javascript中的函数对象的更多相关文章

  1. (转载)JavaScript中匿名函数,函数直接量和闭包

    首先,我们先看看下面几种写法:1.function f(x){return x*x;};f(x);2.(function(x){return x*x;})(x);3.(function(x){retu ...

  2. Javascript中的函数(三)

    一:概述 函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解.JavaScript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的.通过函数对象的性质 ...

  3. Javascript中的函数(Function)与对象(Object)的关系

    今天我们来尝试理解Function和Object.因为这个里面有些人前期可能会搞糊涂.他们之间到底是什么关系.当然也不除外当初的我. 注意:官方定义: 在Javascript中,每一个函数实际上都是一 ...

  4. JavaScript中Function函数与Object对象的关系

    函数对象和其他内部对象的关系 除了函数对象,还有很多内部对象,比如:Object.Array.Date.RegExp.Math.Error.这些名称实际上表示一个 类型,可以通过new操作符返回一个对 ...

  5. java基础62 JavaScript中的函数(网页知识)

    1.JavaScript中,函数的格式 function 函数名(形参列表){ 函数体; } 2.JavaScript中,函数需要注意的细节 1.在javaScript中,函数定义形参时,是不能使用v ...

  6. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  7. JavaScript中的函数表达式

    在JavaScript中,函数是个非常重要的对象,函数通常有三种表现形式:函数声明,函数表达式和函数构造器创建的函数. 本文中主要看看函数表达式及其相关的知识点. 函数表达式 首先,看看函数表达式的表 ...

  8. JavaScript中的事件对象

    JavaScript中的事件对象 JavaScript中的事件对象是非常重要的,恐怕是我们在项目中使用的最多的了.在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含这所有与事件有 ...

  9. JavaScript中Eval()函数的作用

    这一周感觉没什么写的,不过在研究dwz源码的时候有一个eval()的方法不是很了解,分享出来一起学习 -->首先来个最简单的理解 eval可以将字符串生成语句执行,和SQL的exec()类似. ...

随机推荐

  1. logging日志过滤和日志文件自动截取

    1.日志过滤 import logging class IgnoreFilter(logging.Filter): def filter(self,record): return "girl ...

  2. JS内置对象练习(慕课网题目)

    效果图: XXXX年XX月X日 星期X--班级总分为:81 格式要求: 1.显示打印的日期. 格式为类似“XXXX年XX月XX日 星期X” 的当前的时间. 2.计算出该班级的平均分(保留整数). 同学 ...

  3. OCP 11g 第一章练习

    练习 1-1 研究所在环境的DBMS 这是一个书面练习,没有具体的解决方案. 确定自己所在环境使用的应用程序, 应用服务器 , 和数据库. 然后集中精力研究数据库, 体验一下数据库的规模和忙碌程度. ...

  4. SpringBoot学习 (一) Eclipse中创建新的SpringBoot项目

    1. Eclipse中安装STS插件 (1)在线安装 Help--Eclipse Marketplace... 搜索“STS”,点击“install”安装    (2)本地安装 打开网页 http:/ ...

  5. Redis学习笔记(三)列表进阶

    RPOPLPUSH source destination(弹出source列表最右端的元素,并推入destination的最左端,同时返回这个元素) BRPOPLPUSH source destina ...

  6. 移动端超级好用的reset.css(只做参考哦具体以你们实际项目需求为准)

    html { color: #333; /*规定主色调,依据业务场景(非必须)*/ background: #F6F6F6; /*规定主背景,依据业务场景(非必须)*/ overflow-y: aut ...

  7. codevs 1316 文化之旅 2012年NOIP全国联赛普及组

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文 ...

  8. 嵌入式ARM开发板学习方法步骤

    嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有linux,android. 平台:Cortex-A9开发板 嵌入式技术学习如何入手,从何学起呢, 以下内容简单介绍嵌入式开发的学习步骤及如 ...

  9. 7-Java-C(小题答案)

    1:58497 2:171700 3:145 4:i + j+2 == k+1 || i + k+2 == j+1 || k + j+2 == i+1 5:s + " " + (c ...

  10. uva820 Internet Bandwidth

    就是模板... #include<cstdio> #include<cstring> #include<vector> #include<queue> ...