定义并且立即执行JS匿名函数有几种方法哪?我的结论是有无数种,请看:
/*最流行的写法*/
(function(){
alert("run!")
})();
/* !号可以有1~正无穷个,所以这一种就可以衍生无数种方式 */
!!!(function(){
alert("run!")
})();
(function(){
alert("run!")
}).call();
(function(){
alert("run!")
}).apply();
(function(){
alert("run!")
}());
void (function(){
alert("run!")
})();
~(function(){
alert("run!")
})();
~!(function(){
alert("run!")
})();
/* 这个最好玩 */
delete (function(){
alert("run!")
})();
+(function(){
alert("run!")
})();
-(function(){
alert("run!")
})();
setTimeout(function(){
alert("run");
},0);
/*自由变态组合,可以衍生出无数种方式*/
~+-!(function(){
alert("run!")
})();
以上可能call和apply的语义比较清晰,其他方式还是比较令人费解的。
分享到:
- 2009-06-08 20:51
- 浏览 1821
- 评论(2)
- 论坛回复 / 浏览 (1 / 2167)
- 查看更多
相关推荐
JavaScript中的匿名函数是一种没有名称的函数,通常在需要一次性执行或者作为参数传递时使用。它们在编程中扮演着重要的角色,特别是在处理回调、事件处理、模块化等方面。本篇文章将详细探讨js匿名函数的使用及传参...
由于JavaScript没有像Java那样的访问修饰符(如`private`),因此匿名函数成为了实现类似私有方法或封装变量的一种方式。接下来,我们将深入探讨匿名函数的各种写法及其应用场景。 1. **立即执行函数表达式 (IIFE)*...
下面将详细介绍几种常见的匿名函数使用方式: #### 三、匿名函数的使用方式 ##### 1. 直接定义并调用 在定义匿名函数的同时进行调用,这种方式仅能调用一次该匿名函数。例如: ```go res1 := func(n1 int, n2 ...
在JavaScript中,匿名函数通常使用以下两种方式定义: 1. 函数声明形式(不推荐作为匿名函数使用,因为这种方式必须指定函数名)。 2. 函数表达式形式,这也是匿名函数的常用形式,可以直接在需要的地方赋值给变量或...
2. 表达式执行:利用JavaScript的表达式执行规则,通过圆括号包裹匿名函数,如`(function() { alert(2); })();`。 3. `void`操作符:`void`操作符用于执行一个表达式,并返回`undefined`,常用于执行匿名函数,如`...
总结一下,JavaScript中的匿名函数递归调用可以通过以下几种方式实现: 1. 将匿名函数赋值给一个变量,然后在函数体内部使用该变量。 2. 使用`arguments.callee`(但在ES5的严格模式和ES6中不再推荐)。 3. 使用...
为了解决这个问题,你可以创建一个立即执行的匿名函数,将`i`作为参数传入,确保每个按钮的点击事件拥有自己独立的`i`副本。如代码所示: ```javascript btn.on('click', (function(n) { return function(evt) {...
### JavaScript 函数详解 #### 一、函数的概念与重要性 在编程领域中,函数(Function)是一个不可或缺...在未来的学习过程中,我们还将进一步探索更高级的函数特性,如匿名函数、箭头函数等,以增强我们的编程技能。
这里的`arguments.callee`代表的就是当前正在执行的匿名函数,因此可以实现匿名递归。 需要注意的是,从ES6开始,`arguments.callee`已被视为非标准特性,新的箭头函数中甚至没有`arguments`对象。为了在ES6及更高...
箭头函数可以用于创建简单的回调或匿名函数,同时保持代码简洁。例如,返回对象时,可以这样写: ```javascript const getStudent = () => ({ name: 'Michael', age: 18 }); ``` 或者对于单参数的函数,可以...
的结果都为1),基础函数同样是一个匿名函数,使用shell函数递归调用自身来计算n-1的阶乘,并将n与这个结果的乘积返回作为当前n的阶乘值。 通过这种方式,利用闭包保存已经计算过的值,并在需要时直接返回这些值,...
这可以被视为一种快捷方式,让我们可以在声明之前调用函数。例如: ```javascript foo(); // 这里可以正常调用函数 foo,因为其声明被提升到了作用域的顶部 function foo() { alert('hello'); } ``` 2. 函数...
Lambda表达式,又称为匿名函数,是函数式编程的核心概念之一。在JavaScript中,我们可以通过`function`关键字创建一个函数,但Lambda表达式提供了一种更简洁的语法,即使用箭头`=>`来定义函数。例如,一个简单的...
- 使用匿名函数表达式并依赖于调试工具提供的其他信息来定位代码位置。 - 对于需要递归的情况,可以考虑使用闭包或其他模式来代替命名函数表达式。 #### 替代方案 如果仍然希望使用命名函数表达式,可以考虑使用...
函数表达式可以在运行时动态地赋予函数,并且在表达式中可以使用匿名函数(没有标识符的函数)。这种匿名函数在某些场景中非常有用,比如当函数只是临时使用一次时。 递归函数是函数表达式中的一个重要概念,它指的...
JavaScript中的`Function`函数是一个核心概念,它不仅是一种数据类型,更是一种创建函数的方式。在JavaScript中,函数是"一等公民",这意味着它们与其他数据类型(如数字、字符串)一样,可以作为变量赋值、作为参数...
总结,`arguments`, `caller`, 和 `callee`是JavaScript函数中三个重要的隐含参数,它们提供了一种动态访问和操作函数调用参数的方式,以及跟踪函数调用链的能力。然而,由于`arguments.callee`在ES5后的限制,现在...
在这个例子中,`createFn`返回一个匿名函数,这个匿名函数被赋值给`createdFn`,然后通过调用`createdFn()`执行。 当我们谈论二分查找算法(如文档中提到的`search`函数)时,理解这个区别至关重要。二分查找通常...