- 浏览: 1127882 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1437页面里的img元素,想要 ... -
JavaScript中奇葩的假值
2016-03-14 17:43 1015通常在以下语句结构中需要判断真假 if分支语句 whi ... -
世界上最短的数字判断代码
2016-03-14 16:21 1425我们知道JavaScript提供了typeof运算符,因此最 ... -
getBoundingClientRect在IE9/10里的bug
2015-01-12 08:30 1527getBoundingClientRect可以获得页面中某个 ... -
JavaScript中的直接量与初始器的区别
2014-11-08 06:09 1470很多代码优化及公司规范都会提到 写对象不应该 var ... -
JavaScript中的不可见数据类型
2014-11-02 11:08 1140JS提供了一些内置对象、函数和构造器供我们编程,如Math ... -
ES5严格模式
2014-10-08 18:20 1091严格模式(Strict mode)是由ECMA-262规范 ... -
JavaScript生成GUID的算法
2014-07-16 14:25 2902全局唯一标识符(GUID,Globally Unique ... -
JavaScript中点号“.”的多义性
2014-06-07 19:42 1537点号「.」在JavaScript中 ... -
冗余换性能-从Backbone的triggerEvents说开了去
2014-02-19 11:03 835Backbone是一个优秀的前端MVC库,它的代码质量必定 ... -
JavaScript中delete操作符不能删除的对象
2013-11-27 13:21 1189ES3 中,delete在8.6.2.5及11.4.1有介 ... -
JavaScript中instanceof对于不同的构造器可能都返回true
2013-11-19 11:13 1085我们知道 instanceof 运算符用来检查对象是否为某 ... -
JavaScript里模拟sleep
2013-10-16 07:52 1428有几种方式,但都不完美 一、不断循环,直到达到指定时间 ... -
参数有中包含空格且使用Post提交时须将空格转换成加号
2013-10-14 08:07 5098jQuery的serialize模块中有个r20正则 ... -
JavaScript中“基本类型”之争
2013-10-04 20:58 1016前端面试中常被问到的问题之一就是“JavaScript的基本 ... -
ES3和ES5关于计算顺序的问题(ES5先计算函数ES3则是参数)
2013-09-13 23:35 1240从cmc那看到的,分享给园友。以下是一个怪异的代码,谁 ... -
一道关于"/g"笔试题
2013-07-26 07:13 976正则里“g”表示全局(global)的意思,比如当替换字符串 ... -
JavaScript原型继承的陷阱
2013-05-27 20:51 1309JavaScript默认采用原型 ... -
JavaScript中__proto__与prototype的关系
2013-05-21 10:38 1380这里讨论下对象的内 ... -
JavaScript中__proto__与prototype的关系
2013-05-21 10:01 3这里讨论下对象的内 ...
相关推荐
Javascript中定义函数的方式有多种,函数直接量就是其中一种。如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数。好,看看匿名函数的如何被调用。 方式1,调用函数,得到返回值。强制...
Javascript中定义函数的方式有多种,函数直接量就是其中一种。如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数。好,看看匿名函数的如何被调用。 方式1,调用函数,得到返回值。强制...
不管是什么编程语言,... 那么问题来了,我们知道在Javascript中,有一类函数叫做匿名函数,没有名称,怎么调用呢?当然你可以说,可以把匿名函数赋值给一个常量: const factorial = function(n){ if (n <= 1) {
匿名函数就是没有实际名字的函数。 javaScript的匿名函数形式多样,而且不搞清楚,容易看晕代码。 以下是成功调用的匿名函数: 代码如下: (function () { alert(... //运算符+匿名函数调用 (f
概念:所谓函数表达式指的是将声明的函数赋值给一个变量,通过变量完成函数的调用和参数的传递,它也是JavaScript中另一种实现自定义函数的方式。 5.5 匿名函数 函数表达式 var fn = function sum(num1, num2) { ...
方式6,匿名函数执行放在中括号内123[function(){ console.log(this) // 浏览器得控制台输出window}(this)]
本文介绍了js匿名函数和闭包的相关内容,供大家参考,具体内容如下 匿名函数 [removed] //function(){}//会报错 var fun = function(){};//将匿名函数赋值给变量 (function(){})();//匿名函数自执行 function...
匿名函数,也称为拉姆达函数,是一种使用JavaScript函数的强大方式。以下总结了匿名函数的特点: 任何函数表达式从技术上说都是匿名函数,因为没有引用它们的确定的方式; 在无法确定如何引用函数的情况下,递归...
前面有一篇提到了 匿名函数的多种调用方式。这篇看看具名函数的多种调用方式。 1、() 平时最常用的就是()运算符来调用/执行一个函数: 代码如下: // 无参函数fun1 function fun1() { alert(‘我被调用了’&#...
带名函数是指函数显示地给出了一个名字的函数,function abs(x){}。匿名函数是指函数只带有function这个关键字,而没有像abs这种函数名称的函数,如function(){}。ES6标准新增了一种新的函数:Arrow ...函数调用时
javascript语法灵活,同一个功能有五...2.(function(arg){})(window),匿名方法调用,在构造命名空间时比较有用,后面的括号中的参数与匿名方法中的入参一一对应。 3.func.bind(sth)(),mozilla手册中提到bind是在ECMA
引入 匿名函数 闭包 变量作用域 函数外部访问函数内部的局部变量...这意味着,函数运行在定义它的作用域中,而不是在调用它的作用域中。这是 JavaScript 的一大特色,将在后面说明。 把这两个因素结合在一起,就能
OK,先来看看更多匿名函数调用模式: 代码如下: (function(){alert(1);}()) (function(){alert(2);})() void function(){alert(3);}() 以上3个都是正确的,且在功能上都是等同的。 再来看下...
( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因...
匿名函数:没有名字的函数; 闭包:可访问一个函数作用域里的变量的函数; 一 匿名函数 // 普通函数 function box(){ // 函数名是box; return 'Lee'; } box(); // =>Lee; 调用函数; // 匿名函数 function(){ // ...
代码如下: (function(){ //这里忽略jQuery所有实现 })();...当一个匿名函数被括起来,然后再在后面加一个括号,这个匿名函数就能立即运行起来!真神奇哦! 嘿嘿!胡闹到此为止。在这一节,我们碰到