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

本文详细解析了JavaScript中匿名函数的三种常见写法,包括如何通过变量引用、直接调用以及作为参数传递的方式执行匿名函数,并通过实例演示了括号在代码块标识中的作用,以及使用内置函数检测执行效果的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文出处: http://www.dnew.cn/post/196.htm 先看下下面几种写法 1.function f(x){return x*x;};f(x); 2.(function(x){return x*x;})(x); 3.(function(x){return x*x;}(x)); 第一种我们应该都很熟悉了,这是我们经常使用的写法。第二第三种都是匿名函数的写法。 -------------------------------------------------------------------------------- 第二种 可以这样理解: •var f=function(x) {return x*x;};f() 那我们不通过f这个变量来引用函数就是 •function(){}() 然而这样肯定是错误的就像 •var f=1+2; •f=f*0; 与 •var f=1+2*0; 结果不同一样。 要得到正确结果只能: •f=(1+2)*0; 也就是要明确的标识出程序块,即: •(function(){})() 肯你有疑问:括号“()”到底是不是起到了标识代码块的作用? 我们可以用JavaScript的内置函数检测一下! 举一个最简单的例子: •alert(4) 这段代码会弹出提示内容是“4” 改成这样 •(alert)(4) 可以看到执行的效果和上一段代码一样。 这种形式的函数执行也被很多JavaScript框架所采用。 -------------------------------------------------------------------------------- 第三种,如果你用过jsvm框架的话就会发现里面的代码使用了这种形式。 那如何解释第三种情况呢? 为了弄明白浏览器是如何理解这样的写法的,我们可以利用一下Mozilla Firefox的错误控制台功能。 在代码中插入一段错误代码,代码段如下: •(function(s){s+s}(1)).splice(); 打开Mozilla Firefox的错误控制台,可以看到有如下的错误提示 错误: (function (s) {})(1) has no properties 源文件:file:///C:/Documents…….html 行:18 可以认为,浏览器对于 •(function(s){s+s}(1)) 这样的代码按照 •(function (s) {s+s})(1) 来解析的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值