<pre name="code" class="html"><pre name="code" class="html"><pre name="code" class="html"><pre name="code" class="html"><pre name="code" class="html"><pre name="code" class="html"><html>
<head>
<script>
window.onload = function(){
//即时函数1
(function(){
alert('watch out 1!');
}());
//即时函数2
(function(){
alert('watch out 2!');
})();
//非即时函数
var watch = function(){
alert('watch out!');
};
watch();
//示例
(function () {
var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
today = new Date();
msg = 'Today is ' + days[today.getDay()] + ',' +today.getDate();
alert(msg);
})();//输出" Today is Fri, 21"
//带参数的即时函数
(function (who, when){
console.log("I met" + who +" on " + when);
}("Joe Black", new Date()));
//访问全局变量
(function (global){
//通过‘global’访问全局变量
}(this));
//即时函数的返回值
//三种形式均可,不要与var result = function(){};混淆
var result = (function () {
return 2 + 2;
})();
console.log(result);
result = function () {
return 2 + 3;
}();
console.log(result);
result = (function () {
return 2 + 4;
}());
console.log(result);
//用即时函数包装对象
var o = {
message : (function(){
var who = "me",
what = "call";
return what + " " + who;
}()),
getMsg : function () {
return this.message;
}
};
//用法
console.log(o.getMsg());//输出"call me"
console.log(o.message);//输出"call me"
//即时函数应用,初始化
({
//在这里可以定义设定值
//又名配置常熟
maxwidth : 600,
maxheight : 400,
//还可以定义一些实用的方法
gimmeMax: function (){
return this.maxwidth + "x" + this.maxheight;
},
//初始化
init: function () {
console.log(this.gimmeMax());
//更多初始化任务
}
}).init();
}
</script>
</head>
</html></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
</pre></pre></pre></pre></pre>
转帖评论 即时函数1和即时函数2有什么区别呢?
即时函数1是声明一个函数,并立即执行它,最外层的括号令它成为一个独立的作用域沙箱
而即时函数2是声明一个不立即执行的函数,将其放置于沙箱中,并立即去执行该沙箱中的代码