日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript立即调用的函数表达式

發布時間:2023/12/10 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript立即调用的函数表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?1. 什么是自執行的匿名函數?

它是指形如這樣的函數: (function {// code})();

2. 疑問
為什么(function {// code})();可以被執行, 而function {// code}();卻會報錯?

3. 分析
(1). 首先, 要清楚兩者的區別:
(function {// code})是表達式, function {// code}是函數聲明.
(2). 其次, js"預編譯"的特點:
js在"預編譯"階段, 會解釋函數聲明, 但卻會忽略表式.
(3). 當js執行到function() {//code}();時, 由于function() {//code}在"預編譯"階段已經被解釋過, js會跳過function(){//code}, 試圖去執行();, 故會報錯;
當js執行到(function {// code})();時, 由于(function {// code})是表達式, js會去對它求解得到返回值, 由于返回值是一 個函數, 故而遇到();時, 便會被執行.

另外, 函數轉換為表達式的方法并不一定要靠分組操作符(),我們還可以用void操作符,~操作符,!操作符……
如:

!function(){ alert("另類的匿名函數自執行"); }();

?

佚名函數()()?(())
? (function() {alert('hello')} )();

?

(function(v) {alert(v)} )('hello');

?

?

? (function() {alert('hello')} ());

?

(function(v) {alert(v)} ('hello'));

?

?

?有名函數()()?(())
(function fn() {alert('hello')} )();

?

(function fn() {alert('hello')} ());

?

對象函數()()  對象函數(())
({ init:function(){ alert('hello') } }).init();

?

({ init:function(){ alert('hello') } }.init());

?

對象內部()?不可這樣調用
var foo = { fn: function (x) {return x % 2 != 0 ? 'yes' : 'no';}(1) }; alert(foo.fn); // 'yes'

?

var foo = { fn: function (x) {return x % 2 != 0 ? 'yes' : 'no';}(1) }; alert(foo.fn());

?

對象+","+函數+()“對象”可以為如下,自己可試
1, function () {alert('anonymous function is called'); }();

?

1、任意數字
2、特殊字符(!、~、- 、+)
3、void
4、true、false
當然這些也可以組合使用。
()應用,設計模式之單例模式?自定義對象
//()應用var Singleton = (function () {function init() {/*這里定義單例代碼*/return {publicMethod: function () {alert('hello world');}};}return {getInstance: function () {return init();}};})();/*調用公有的方法來獲取實例:*/Singleton.getInstance().publicMethod();

?

? var obj = {}; (function (q) {q.publish = function (str) {alert(str);}} (obj)); //提交obj全局對象 obj.publish('hello');//hello

?

(function (a) {a.publish = function (str) {alert(str);} } (window)); //window對象 publish('hello');

?

著名應用實例:jQuery?設計模式之迭代器模式 
? (function() { var jQuery = (function() {//構建jQuery對象var jQuery = function() {//實例init()return new jQuery.fn.init();};jQuery.fn = jQuery.prototype = { constructor: jQuery,init: function() {var match;}, jQuery: "1.7.1"};// 合并 init()的屬性為jQuery.fn jQuery.fn.init.prototype = jQuery.fn;//返回jQuery return jQuery })(); //定義jQuery全局對象 window.jQuery = window.$ = jQuery; })(window);  //應用實例 alert($().jQuery);//1.7.1

?

var fn = (function () {var index = 0,data = [1, 2, 3, 4, 5],length = data.length;return { length: length,rewind: function () {index = 0;},current: function () {return data[index];}}; } ()); alert(fn.current());

?

根據參數選擇執行對象?
? var fn=(function(){var obj={i1:function(){return 'a';}(),i2:function(){return 'b';}()};//json格式,可以無序排列var json={"1":"i1","2":"i2"};//array數組,有序排列// var ar=["i11","i12"]; return {init:function(i){return obj[json[i]];}}; })(); alert(fn.init(1));

?

? return {ini: function(X) { //聲明一個函數,名稱為iniX.__MSG_QS__ = {}; //為傳進來的對象添加屬性X.on = C; //為傳進來的對象添加方法X.dm = G; //為傳進來的對象添加方法return X}}

  

使用閉包:

(function($)?{
??
//?Code?goes?here
})(jQuery);

這是來自jQuery官方的插件開發規范要求,使用這種編寫方式有什么好處呢?

a) 避免全局依賴。

b) 避免第三方破壞。

c) 兼容jQuery操作符'$'和'jQuery '

我們知道這段代碼在被解析時會形同如下代碼:

var?jq?=?function($)?{
??
//?Code?goes?here
};
jq(jQuery);

?

? 利用匿名函數綁定事件 var obj = document.getElementById("psd");obj.οnclick=(function(){return function(){alert('i');}})()

  

? 1.佚名函數 function() { // }2.分組正則調用佚名函數 (function() { // })(); 3.定時調用佚名函數 setTimeout(function(){alert('msg'));4.佚名函數返回對象 var bird = (function() {return { type: pro,attack: func}; }()); 5.給佚名函數傳弟參數,等價4 (function( bird ) {bird.type = "red";bird.attack = function() {}; }( window.bird = window.bird || {} ));

?

?

轉載于:https://www.cnblogs.com/sntetwt/archive/2012/09/11/2679808.html

總結

以上是生活随笔為你收集整理的javascript立即调用的函数表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 玉足调教丨vk24分钟 | 打美女屁股网站 | 在线观看视频一区二区 | av每日更新在线观看 | 亚洲综合图色 | 国产成人精品亚洲线观看 | 97久久精品视频 | 亚洲av无码电影在线播放 | 日韩二区在线观看 | 成人免费性视频 | 男生和女生一起差差差很痛的视频 | 国产真人真事毛片 | 女性爱爱视频 | 精品麻豆视频 | 亚洲天堂男人av | 欧美做受xxxxxⅹ性视频 | 中出少妇| 日批视频在线免费看 | 中文字幕一区二区三区四区免费看 | 9999精品视频 | 国产 日韩 欧美 精品 | 欧美激情第1页 | 欧美大片免费观看网址 | 91成人短视频在线观看 | 里番精品3d一二三区 | 国产网站精品 | yellow免费在线观看 | 精品日韩视频 | 精品国产av色一区二区深夜久久 | 国产又粗又黄又爽又硬 | 午夜日韩视频 | 毛片av免费看 | 91资源站 | 中文字幕永久在线观看 | 人妻久久一区二区三区 | 中文字幕国产剧情 | 成年人免费大片 | 美女诱惑一区 | 欧美日韩色综合 | jizz在线观看视频 | 久久久久人妻一区精品色 | 久操视频免费观看 | 91精品在线免费观看 | 日韩av三级在线观看 | 久久黄色影视 | 国产精品成人久久久久 | 视频在线观看你懂的 | 内射后入在线观看一区 | 成人av在线电影 | 国产精品久久久久久久 | 北条麻妃一区二区三区免费 | 精品久久久免费 | 999久久久国产 | 日韩av一区在线 | 黄网站在线免费看 | 一区二区三区福利 | 丰满熟妇肥白一区二区在线 | 久久黄色片 | 18无套直看片红桃 | 国产又黄又爽视频 | 亚洲午夜久久久久久久久 | 国产伦精品一区二区三区视频1 | www.亚洲一区二区 | 国产一区a| 日本少妇bb | 女人扒开腿让男人捅爽 | 亚洲精品美女网站 | 亚洲综合精品一区 | 精品免费在线观看 | 午夜影院在线免费观看 | 美女一区二区三区 | 特级毛片av | 国产三级国产精品国产国在线观看 | 国产精品天美传媒 | 在线观看理论片 | 婷婷国产一区二区三区 | 亚洲av永久纯肉无码精品动漫 | 在线观看网站 | 一女三黑人理论片在线 | 丰满熟妇肥白一区二区在线 | 僵尸艳谈| 欧美福利影院 | 97超视频 | 女人扒开双腿让男人捅 | 欧美激情在线观看视频 | 精品少妇一区二区三区免费观看 | 可以在线观看的av网站 | 综合国产一区 | 中文字幕免费看 | 中文字幕在线有码 | 中文字幕99 | 高h全肉污文play带道具 | 欧美精品一区二区免费看 | 日韩女优在线 | 欧美 日韩 人妻 高清 中文 | 四虎免费在线观看 | 与亲女洗澡时伦了毛片 | 色综合激情 | 91精品久久久久久久 |