易截截图软件、单文件、免安装、纯绿色、仅160KB

Javascript 匿名函数及其代码模式原理

之前看了有关匿名函数的调用,感觉有必要和大家分享一下。
关于什么是匿名函数,及它带来的优势在本文就不深究了,先抛出一个常用的匿名函数:
(function(){alert('yo')})()
很多同学知道怎么用这种匿名函数,却或许并不明白为什么这样写就能够调用匿名函数。也许知道后面的圆括号是执行前面的函数,而并不清楚前面的圆括号具有何种含义!本文将带你了解匿名函数的代码模式原理。
OK,先来看看更多匿名函数调用模式:
1.
(function(){alert(1);}())
2.
(function(){alert(2);})()
3.
void function(){alert(3);}()
以上3个都是正确的,且在功能上都是等同的。
再来看下错误的书写方式:
4.
function(){alert('yo')}()
上面这段代码会抛出语法错误,这究竟是为什么呢?带着这个问题我们来看看秦歌给出的解答:
1.函数字面量:首先声明一个函数对象,然后执行它。
2.优先表达式:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。
3.void操作符:用void操作符去执行一个没有用圆括号包围的一个单独操作数。 
好吧,先不管解答是否正确,我们把这些放到一边,再来看看函数声明的语法和函数表达式的语法说明:
一、函数声明:
function name([param[, param[, ... param]]]) {
   statements
}
这里的函数名称name是不可以省略的。如果省略了函数名称就会报错。
这也合理解释了为什么直接写
function(){alert('yo')}
会出错?因为编译器当他是函数声明而代码中没有出现函数名称,结果可想而知。
二、函数表达式:
function [name]([param] [, param] [..., param]) {
   statements
}
函数名称name可以被省略,省略name就是所谓的匿名函数。说明一点:如果需要创建匿名函数,则必须给出一个函数表达式而非函数的显式声明
现在我们可以做出更准确的解释:
1\2\3匿名函数代码模式只不过是通过括号或者void告诉编译器,把function(){}当作函数表达式来解释罢了。这其中并没有那么复杂的优先级和void操作符原理。这只不过是一个简单的语法转换。
可以想象,只要符合函数表达式的语法,我们就可以创建出N种匿名函数代码模式,比如
!!function(){
   alert('yo');
}()
+function(){
   alert('yo');
}()
等等等等……
这其中并没有


相关文档:

JavaScript,等比例缩放图片的函数

<script language="JavaScript">
<!--
//图片按比例缩放
var flag=false;
function DrawImage(ImgD,iwidth,iheight){
    //参数(图片,允许的宽度,允许的高度)
    var image=new Image();
    image.src=ImgD.src; ......

Javascript: onresize

浏览器:IE 8、FF 3.6、Chrome 4.0、Safari 4.0、Opera 10.1
仅有IE浏览器支持HTMLElement.onresize(比如body.onresize)
其它浏览器只支持window.onresize
先说IE的HTMLElement.onresize
使用前请确定你的心脏及血压正常,如果你定义了
body.onresize = function(){……}或者html.onresize = obj.fun;
......

一句话理解javascript prototype属性

这句话是:prototype中定义的是对象实例要访问的属性或方法的一个替补。
举例说明一下:
//1)定义了一个对象:
function A()
{
//给对象定义一个属性
this.f1="this is f1";
}
//2)我们可以这样使用对象:
var a = new A();
alert(a.f1)//弹出消息:this is f1
//3)我们可以扩展对象:
A.prot ......

用Javascript动态添加删除HTML元素实例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>用javascript动态添加删除html元素</title>
<script type="text/javascript"><!-- 
function $(nodeId) { 
re ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号