关于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!")
})();
上面是直接扣别人整理的 ,所有的方式都将匿名函数用小括号给包起来调用; 而我在学习bootstrap.js 里边的插件写法时候遇到却不用 如下
// 1. 定义立即调用的函数
+function($){
"use strict"; //使用严格模式ES5支持
//后续步骤
// 2. xx 插件类及原型方法的定义
// 3. 在jQuery上定义xx插件,并重设插件构造器
// 4. 防冲突处理
// 5. 绑定触发事件
}(window.jQuery)
今天有些了一个倒计时跳转的js时, 还是以为直接 function(){}() 这样就可以调用了,结果试了半天都不可以; 最后还是用最正统的 (function(){})() 写法才成功;
接着尝试发现 bootstrap那种写法只有前面符号是 ~!+- 这几个才能成功(也就是上面 最后一种写法), 难道是通过运算符执行后面的语句?
顺便贴上代码
var countdown=10;
var $btnBack=document.getElementById("btnBack");
+function (){
if(countdown>0)
{
$btnBack.innerHTML=countdown+" seconds left";
setTimeout(arguments.callee,1000);
countdown--; }
else
{
alert("over");
}
}();
结论:如果不将匿名函数用小括号包起来 前面就必须加上 ~!+- 中的一个或多个或组合。。。
~function(){}()
!function(){}()
+function(){}()
-function(){}()
关于js中立即执行的匿名函数写法的更多相关文章
- js闭包中的this(匿名函数中的this指向的是windows)
js闭包中的this(匿名函数中的this指向的是windows) 一.总结 1.普通函数中的this指向的是对象,匿名函数中的this指向的是windows,和全局变量一样 2.让匿名函数中的thi ...
- JavaScript中的闭包与匿名函数
知识内容: 1.预备知识 - 函数表达式 2.匿名函数 3.闭包 一.函数表达式 1.定义函数的两种方式 函数声明: 1 function func(arg0, arg1, arg2){ 2 // 函 ...
- 进阶学习js中的执行上下文
在js中的执行上下文,菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文,今天我们就更进一步的讲解js中的执行上下文. 1.当遇到变量名和函数名相同的问题. var a = 10; functio ...
- 浅析PHP中的闭包和匿名函数
PHP闭包和匿名函数使用的句法与普通函数相同,但闭包和匿名函数其实是伪装成函数的对象(Closure类的实例) .下面给大家介绍PHP中的闭包和匿名函数知识,需要的朋友参考下吧 闭包是指在创建时封 ...
- js中的执行环境及作用域
最近在面试时被问到了对作用域链的理解,感觉当时回答的不是很好,今天就来说说js中的作用域链吧. 首先来说说js中的执行环境,所谓执行环境(有时也称环境)它是JavaScript中最为重要的一个概念.执 ...
- JS中的日期内置函数
用JS中的日期内置函数实现在页面显示:“今天是:2013年9月26日14:32:45”. var date=new Date(Date.parse('9/26/2013 14:32:45')); ...
- 有趣的js匿名函数写法(function嵌套)
例子没有什么实际意义,只能做为思路参考 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&quo ...
- js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)
js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...
- JS中立即执行函数的理解
1.匿名函数不能单独定义,必须进行赋值操作或者立即执行,否则会被JS引擎定义为语法错误 function(){alert(dada);} VM229:1 Uncaught SyntaxError: U ...
随机推荐
- hive数据文件简单合并
MR代码: package merge; import java.io.IOException; import java.util.Iterator; import org.apache.hadoop ...
- VC 类泡泡龙游戏算法
#include <stdio.h> #include <malloc.h> #include <string.h> /* 1 2 1 2 2 1 2 1 2 1 ...
- 分段播放的flash播放器
效果: 视频分段好处显而易见,就是节省流量,因为看视频很多时候都不会看完,还有很多时候是跳着看的.还有的时候也许用户暂停视频出去买东西了... 本文不讨论flash rtmp直播流,例子用的是普通的h ...
- SQL基本语句(1)
利用select的结果创建表 可以通过选择一个表的全部内容(无 WHERE 子句)来拷贝一个表,或利用一个总是失败的 WHERE 子句来创建一个空表,如: mysql> CREATE TABLE ...
- MSP430F149学习之路——捕获/比较模式
1.捕获模式 #include <msp430x14x.h> unsigned ,last1=; unsigned ,j=; void mian(void) { WDTCTL = WDTP ...
- USACO Section 3.2 01串 Stringsobits
题目背景 考虑排好序的N(N<=31)位二进制数. 题目描述 他们是排列好的,而且包含所有长度为N且这个二进制数中1的位数的个数小于等于L(L<=N)的数. 你的任务是输出第i(1< ...
- Digest [information value filtering]
http://oak.cs.ucla.edu/~cho/papers/cho-filter.pdf 最近对评估方法进行研究,这篇paper是一种对IR方法进行总结,不错的角度,也比较全面
- java web学习
一直想下决心好好学下java web,但是总是间断,虽然我的方向是ios,但是觉得后台也是相当重要,毕竟移动端实际上更多也就是展示后台拉取到的信息,搞移动端的不能总是受制于后台,各位看官觉得呢? 这两 ...
- PAT1007
#include<stdio.h>#include<vector>#include<algorithm>using namespace std; int main( ...
- 关于union的那些事儿
自从当年明月的<明朝的那些事儿>爆红之后,以***那些事儿命名的文章便层出不穷.个人认为,这样的命名通俗但具有吸引力,容易接地气.哈哈,所以我也写了几篇以<***那些事儿>的文 ...