- 浏览: 1180941 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhizhen23:
LZ 提供的链接地址失效了
重写的isPlainObject方法 -
LovingBaby:
LovingBaby 写道function fun() {}f ...
读jq之二(两种扩展) -
LovingBaby:
说的很清楚!jQuery作者为了实现简洁调用的苦心!高超的编程 ...
读jq之一(jq对象的组成) -
hard_ly:
...
将伪数组转换成数组 -
zlxzlxzlxzlxzlx:
这不能算是任意进制之间的转换,例如二十六进制、十二进制又该如何 ...
用递归实现十进制数转换N进制
js中定义函数的方式有多种,函数直接量就是其中一种。如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数。
好,看看匿名函数的如何被调用。
1、执行后得到返回值的函数调用
//方式1,调用函数,得到返回值。强制运算符使函数调用执行 (function(x,y){ alert(x+y); return x+y; }(3,4));
//方式二,调用函数,得到返回值。强制函数直接量执行再返回一个引用,引用再去调用执行 (function(x,y){ alert(x+y); return x+y; })(3,4);
2、执行后忽略返回值
//方式三,调用函数,忽略返回值 void function(x) { x = x-1; alert(x); }(9);
嗯,最后看看错误的调用方式
//错误的调用方式 function(x,y){ alert(x+y); return x+y; }(3,4);
错误原因见:javascript中大括号“{}”的多义性
评论
4 楼
yunhaifeiwu
2008-12-02
下面是从ymPrompt 3.0版源码中剥离整理出来的。目的是揣磨别人代码中的
div等标签拖动的处理方式。由于是为了便于阅读,与原来的代码有一定的差别。
如:原来有这样的语句:
在下面的代码中,为了便于阅读取消了这种方式,但是如果要在实际使用中,
建议不要取消。因为,这缩代了js代码(如果有第三方js压缩软件,不取消
也未偿不可)。
在下面的代码中,注意 如下的代码:
其中花括号中有许多语句。这种方式,基本上可这样看待:定义了一个函数,并立即
调用它。 这种代码作用,初步估计是为了减少内存泄露之类的吧。
另外,其事件处理方式中,没有搞得很明白,暂时会用自已的方式处理事件
div等标签拖动的处理方式。由于是为了便于阅读,与原来的代码有一定的差别。
如:原来有这样的语句:
var d=document,db=d.body,y=ymPrompt;
在下面的代码中,为了便于阅读取消了这种方式,但是如果要在实际使用中,
建议不要取消。因为,这缩代了js代码(如果有第三方js压缩软件,不取消
也未偿不可)。
在下面的代码中,注意 如下的代码:
(function(){})();
其中花括号中有许多语句。这种方式,基本上可这样看待:定义了一个函数,并立即
调用它。 这种代码作用,初步估计是为了减少内存泄露之类的吧。
另外,其事件处理方式中,没有搞得很明白,暂时会用自已的方式处理事件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>ymPrompt </title> <meta http-equiv="Content-Type" content="text/html; charset=utf8" /> <script type="text/javascript"> </script> </head> <body> <div id="dd" style="background:#FC6; width:80px; position:absolute">ssss</div> <script type="text/javascript"> //用json的形式定义了对象 var fc={ d:"d1111", targDiv:null, ds:function( ){ alert("sss");//无啥意义的函数 }, copy:function(o,c){//这是一个把c中定义的函数与变量,拷贝到对象o中。 o=(o&&typeof o=='object')?o:{}; if (o && c && typeof c == 'object') for(var p in c)o[p] = c[p]; return o; } } //*****************上面这个对象使用例子程序************** //使用fc的copy函数,把用json形式定义的对象与函数拷贝到fc对象中 //fc.copy(fc,{ // b:"b111", // tel:function(){ // alert("fc.copy"); // } //}); //fc.tel(); //由于有上面一个语句,这里可以调用tel函了。 //*********************************************** fc.targDiv=document.getElementById("dd");//设定一个目标对象,本例就是要拖动它 //这里有一个奇怪形式的函数,为了描述方便,姑且叫临时函数吧。 (function(){ //浏览器类型判断 var browser=function(s){ return navigator.userAgent.toLowerCase().indexOf(s)!=-1 }; var isOpera=browser('opera'); var isIE=browser('msie')!=-1&&(document.all&&!isOpera); //统一定义一个事件绑定函数,以兼容主流浏览器的事件注册 var addEvent=(function(){ return eval(['1,function(env,fn,obj){obj=obj||document;', isIE?"obj.attachEvent('on'+env,fn)": 'obj.addEventListener(env,fn,false)', '}'].join('')) })(); //鼠标左键按下响应函数 var dragVar,setDrag=function(e){ e=e||window.event; dragVar=fc.copy(dragVar, {startDrag:true, startX:e.x||e.pageX, startY:e.y||e.pageY, containX:fc.targDiv.offsetLeft, containY:fc.targDiv.offsetTop } ); }; //关联鼠标左键按下事件 到setDrag函数 addEvent('mousedown',setDrag,fc.targDiv); //鼠标移动响应事件及其响应函数 addEvent("mousemove",function(e){ if(dragVar&&dragVar.startDrag){ e=e||window.event; fc.targDiv.style.left=(dragVar.containX+(e.x||e.pageX)-dragVar.startX)+"px"; fc.targDiv.style.top=(dragVar.containY+(e.y||e.pageY)-dragVar.startY)+"px"; } }); //鼠标左键释放及其响应函数 addEvent("mouseup",function(){dragVar=null}); })(); </script> </body> </html>
3 楼
liucl_tiger
2008-12-02
学习了,我还从来没有这样用过!谢谢!
2 楼
zhouyrt
2008-12-02
《悟透javascript》这本书上周我在中关村图书大厦看了,很漂亮。
1 楼
yunhaifeiwu
2008-12-02
这个东东,在关联事件与事件响应函数上,可方便的捕捉到多种对象,再通过apply,完成事件参数传递。当然,从中也能加上自已定义的参数。
这个东东,我在《悟透javascript》中,及ymPrompt源码中也看见。ymPrompt源码中
按这种方式使用:
据个人推测,用来封装一些临时变量。
这个东东,我在《悟透javascript》中,及ymPrompt源码中也看见。ymPrompt源码中
按这种方式使用:
(function(){})();其中花括符中是一大堆业务逻辑代码。
据个人推测,用来封装一些临时变量。
发表评论
-
JavaScript获取图片的原始尺寸
2016-04-20 10:30 1688页面里的img元素,想要 ... -
JavaScript中奇葩的假值
2016-03-14 17:43 1261通常在以下语句结构中需要判断真假 if分支语句 whi ... -
世界上最短的数字判断代码
2016-03-14 16:21 1677我们知道JavaScript提供了typeof运算符,因此最 ... -
getBoundingClientRect在IE9/10里的bug
2015-01-12 08:30 1736getBoundingClientRect可以获得页面中某个 ... -
JavaScript中的直接量与初始器的区别
2014-11-08 06:09 1725很多代码优化及公司规范都会提到 写对象不应该 var ... -
JavaScript中的不可见数据类型
2014-11-02 11:08 1379JS提供了一些内置对象、函数和构造器供我们编程,如Math ... -
ES5严格模式
2014-10-08 18:20 1344严格模式(Strict mode)是由ECMA-262规范 ... -
JavaScript生成GUID的算法
2014-07-16 14:25 3077全局唯一标识符(GUID,Globally Unique ... -
JavaScript中点号“.”的多义性
2014-06-07 19:42 1729点号「.」在JavaScript中 ... -
冗余换性能-从Backbone的triggerEvents说开了去
2014-02-19 11:03 1031Backbone是一个优秀的前端MVC库,它的代码质量必定 ... -
JavaScript中delete操作符不能删除的对象
2013-11-27 13:21 1371ES3 中,delete在8.6.2.5及11.4.1有介 ... -
JavaScript中instanceof对于不同的构造器可能都返回true
2013-11-19 11:13 1295我们知道 instanceof 运算符用来检查对象是否为某 ... -
JavaScript里模拟sleep
2013-10-16 07:52 1613有几种方式,但都不完美 一、不断循环,直到达到指定时间 ... -
参数有中包含空格且使用Post提交时须将空格转换成加号
2013-10-14 08:07 5274jQuery的serialize模块中有个r20正则 ... -
JavaScript中“基本类型”之争
2013-10-04 20:58 1193前端面试中常被问到的问题之一就是“JavaScript的基本 ... -
ES3和ES5关于计算顺序的问题(ES5先计算函数ES3则是参数)
2013-09-13 23:35 1358从cmc那看到的,分享给园友。以下是一个怪异的代码,谁 ... -
一道关于"/g"笔试题
2013-07-26 07:13 1099正则里“g”表示全局(global)的意思,比如当替换字符串 ... -
JavaScript原型继承的陷阱
2013-05-27 20:51 1440JavaScript默认采用原型 ... -
JavaScript中__proto__与prototype的关系
2013-05-21 10:38 1509这里讨论下对象的内 ... -
JavaScript中__proto__与prototype的关系
2013-05-21 10:01 3这里讨论下对象的内 ...
相关推荐
本文将对 JavaScript 匿名函数的定义、创建、调用方式、闭包的概念等进行详细的介绍。 一、函数的定义 在 JavaScript 中,函数可以定义的方式有多种。第一种方式是使用 function 关键字,例如: ``` function ...
Javascript中定义函数的方式有多种,函数直接量就是其中一种。如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数。好,看看匿名函数的如何被调用。 方式1,调用函数,得到返回值。强制...
在上述的调用方式中,还提到了一些JavaScript库如jQuery和Mootools常用的方法,这些框架通常在编写自执行函数时采用类似的匿名函数调用方式,以实现模块化和封装代码。 虽然上述方式提供了多种匿名函数的调用方法,...
### JavaScript匿名函数调用示例解析 #### 一、引言 在JavaScript编程语言中,函数是一等公民,这意味着函数可以作为参数传递给其他函数,也可以作为其他函数的返回值。这种灵活性使得JavaScript中的函数非常强大。...
总的来说,匿名函数在JavaScript中起着至关重要的作用,它们提供了一种简洁且灵活的方式来处理函数,尤其是在需要创建临时或一次性使用的函数时。然而,使用匿名函数时需谨慎,确保代码的可读性和性能。在实际开发中...
匿名函数是JavaScript语言中的一个强大特性,它允许我们不给函数命名,直接声明并执行。在本文中,我们将深入了解匿名函数的定义、特点、代码模式以及应用。 首先,需要明白什么是匿名函数。在JavaScript中,定义...
本篇文章将详细讲解14种不同的匿名函数调用方法。 1. **调用函数得到返回值**: 使用强制运算符`()`来立即执行函数,例如 `(function(x,y){ alert(x+y); return x+y;})(3,4);`。这种方法会立即执行函数,并可以...
不管是什么编程语言,... 那么问题来了,我们知道在Javascript中,有一类函数叫做匿名函数,没有名称,怎么调用呢?当然你可以说,可以把匿名函数赋值给一个常量: const factorial = function(n){ if (n <= 1) {
### JavaScript中匿名函数的创建与调用方法分析 #### 一、概述 在JavaScript中,函数是一等公民,这意味着函数可以作为参数传递给其他函数,也可以作为其他函数的返回值。这种灵活性使得JavaScript中的函数非常强大...
在JavaScript中,匿名函数、函数直接量和闭包是三种非常重要的概念,它们在编程实践中有着广泛的应用。让我们逐一深入探讨这些概念。 1. **匿名函数**: 匿名函数是指没有名字的函数,通常作为表达式的一部分存在...
匿名函数就是没有实际名字的函数。 javaScript的匿名函数形式多样,而且不搞清楚,容易看晕代码。 以下是成功调用的匿名函数: 代码如下: (function () { alert(... //运算符+匿名函数调用 (f
概念:所谓函数表达式指的是将声明的函数赋值给一个变量,通过变量完成函数的调用和参数的传递,它也是JavaScript中另一种实现自定义函数的方式。 5.5 匿名函数 函数表达式 var fn = function sum(num1, num2) { ...
JavaScript中的匿名函数是一种不具有名称的函数,它们主要通过函数表达式或Function构造函数来创建。匿名函数在JavaScript中有着广泛的应用,特别是在避免全局变量污染、实现模块化和函数式编程等方面。以下是对匿名...
在讨论JavaScript编程语言时,匿名函数和闭包是两个重要的概念,它们在函数式编程和模块化代码设计中扮演着核心角色。匿名函数是没有具体名称的函数,它们可以是独立的,也可以是表达式的一部分,通常用于定义临时...
JavaScript中的具名函数有多种调用方式,本文将总结其中的四种方法,主要包括普通函数调用、使用call方法、使用apply方法以及使用new关键字调用。 首先,最常见也是最直接的函数调用方式是使用圆括号()。这通常是在...
### 知识点:匿名函数在JavaScript中的应用与特性 #### 标题解析:“匿名函数的一点知识” 标题“匿名函数的一点知识”简洁明了地指出本文将围绕JavaScript中的匿名函数进行讲解,旨在帮助读者深入理解匿名函数的...
JavaScript中的匿名函数和闭包是两个非常重要的概念,它们在函数式编程和模块化开发中起着关键作用。 首先,让我们来理解匿名函数。匿名函数,顾名思义,是没有名称的函数。在JavaScript中,我们可以直接定义一个不...