亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

javascript匿名函數中的'return function()'作用

2024-05-06 16:46:26
字體:
來源:轉載
供稿:網友

我最近看到很多javascript代碼,看起來我錯了.在這種情況下,我應該建議哪種更好的代碼模式?我將重現我所看到的代碼和每個代碼的簡短說明:

代碼塊#1

該代碼不應該評估內部函數.程序員會因為代碼應該運行而感到困惑.

$(document).ready( function() {  return function() {   /* NOPs */ }});

代碼塊#2

程序員可能打算實現一個自調用功能.他們沒有完全完成實現(他們在嵌套括號的末尾缺少一個().另外,由于它們在外部函數中沒有做任何事情,所以嵌套的自調用函數可以剛剛嵌入到外部功能定義.

其實我不知道他們打算使用自調用函數,因為代碼仍然是錯誤的.但似乎他們想要一個自我調用的功能.

$(document).ready( (function() {  return function() {   /* NOPs */ }}));

代碼塊#3

再次,程序員似乎試圖使用自調用函數.但是,在這種情況下,它是過度的.

$(document).ready( function() {  (return function() {   /* NOPs */ })()});

代碼塊#4

一個示例代碼塊

$('#mySelector').click( function(event) {  alert( $(this).attr('id') ); return function() {   // before you run it, what's the value here?  alert( $(this).attr('id') ); }});

評論:

我想我只是沮喪,因為它會導致人們不明白的蠕蟲,更改范圍界定,他們不是grokking,并通常使真正奇怪的代碼.這些都是來自某些教程的地方嗎?如果我們要教人們如何編寫代碼,我們可以教他們正確的方法嗎?

你會建議什么作為一個準確的教程向他們解釋為什么他們使用的代碼是不正確的?你會建議他們學習什么模式?

我看到的所有使我提出這個問題的樣本都是這樣的問題.這是我遇到的最新的特征片段,展示了這種行為.你會注意到,我沒有發布一個鏈接的問題,因為用戶似乎是相當新手.

$(document).ready(function() { $('body').click((function(){ return function() {  if (counter == null) {  var counter = 1;  }  if(counter == 3) {   $(this).css("background-image","url(3.jpg)");   $(this).css("background-position","10% 35%");   var counter = null;  }  if(counter == 2) {   $(this).css("background-image","url(2.jpg)");   $(this).css("background-position","10% 35%");   var counter = 3;  }  if(counter == 1) {   $(this).css("background-image","url(1.jpg)");   $(this).css("background-position","40% 35%");   var counter = 2;  } } })());});

以下是我建議他們重寫代碼的方法:

var counter = 1;$(document).ready(function() {  $('body').click(function() {    if (counter == null) {      counter = 1;    }    if (counter == 3) {      $(this).css("background-image", "url(3.jpg)");      $(this).css("background-position", "10% 35%");      counter = 1;    }    if (counter == 2) {      $(this).css("background-image", "url(2.jpg)");      $(this).css("background-position", "10% 35%");      counter = 3;    }    if (counter == 1) {      $(this).css("background-image", "url(1.jpg)");      $(this).css("background-position", "40% 35%");      counter = 2;    }  });});

請注意,我并不是說我的代碼在任何方面都更好.我只是刪除匿名中介功能.我實際上知道為什么這個代碼最初沒有做他們想要的,而且我并沒有重寫大家的代碼,但是我確實想要這個代碼至少有可用的代碼.

我認為一個真正的代碼示例將不勝感激.如果你真的想要這個特定問題的鏈接,請給我這個昵稱.他得到了幾個非常好的答案,其中我的中檔最好.

你的第一個例子是奇怪的.我甚至不知道這是否會以作者可能打算的方式工作.第二個簡單地將第一個包裝在不必要的括號中.第三個使用自調用函數,盡管由于匿名函數創建了自己的范圍(可能還有一個閉包),我不知道它有什么好處(除非作者在閉包中指定了其他變量 – 讀取).

自調用函數采用模式(函數f(){/ * do stuff * /}()),并且被立即評估,而不是調用它.所以這樣的事情

var checkReady = (function () {  var ready = false;  return {    loaded: function () { ready = true; },    test: function () { return ready; }  };}())$(document).ready(checkReady.loaded);

創建一個封裝,將返回的對象作為checkready返回到變量ready(它從閉包之外的一切隱藏).這將允許您通過調用checkReady.test()來檢查文檔是否已加載(根據jQuery).這是一個非常強大的模式,并且具有很多合法用途(命名空間,記憶,元編程),但在您的示例中并不是必需的.

編輯:阿爾,我誤解了你的問題.沒有意識到你正在呼吁不好的做法,而不是要求澄清模式.更多關于您詢問的最終形式的問題:

(function () { /* woohoo */ }())(function () { /* woohoo */ })()function () { /* woohoo */ }()

總結

以上所述是小編給大家介紹的javascript匿名函數中的'return function()'作用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合日韩中文字幕v在线| 欧美亚洲第一页| 欧美性受xxxx黑人猛交| 亚洲高清久久网| 国产精品久久久久久久久久久久| 国产亚洲精品一区二555| 亚洲第一精品电影| 日韩av在线免费| 国产精品久久精品| 欧美精品久久久久| 久久99热这里只有精品国产| 日韩av在线直播| 日韩电影免费在线观看| 亚洲精品免费网站| 九九精品视频在线观看| 精品中文字幕在线观看| 视频在线观看一区二区| 亚洲精品国产suv| 6080yy精品一区二区三区| 国产欧美一区二区| 欧美另类老女人| 久久99亚洲热视| 精品无人区太爽高潮在线播放| 伊人伊成久久人综合网小说| 91精品久久久久久久久久另类| 亚洲老头同性xxxxx| 九九视频直播综合网| 国产成人免费91av在线| 成人免费观看网址| 欧美专区在线播放| 久久精品国产精品亚洲| 久久国产精品网站| 欧美裸体男粗大视频在线观看| 日韩亚洲综合在线| 亚洲视频欧洲视频| 91在线高清免费观看| 欧美精品www在线观看| 欧美日韩国产丝袜美女| 国产日韩换脸av一区在线观看| 国产精品大陆在线观看| 日韩va亚洲va欧洲va国产| 日韩免费黄色av| 亚洲欧美国产另类| 欧美激情奇米色| 日韩精品视频在线播放| 国产一区二区三区直播精品电影| 国产一区二区三区在线免费观看| 日韩中文av在线| 欧美超级免费视 在线| 成人免费视频a| 亚洲自拍中文字幕| 91最新在线免费观看| 97不卡在线视频| 欧美精品videos另类日本| 69av视频在线播放| 亚洲国产欧美精品| 成人性教育视频在线观看| 亲爱的老师9免费观看全集电视剧| 欧美精品少妇videofree| 欧美色xxxx| 亚洲精品一区二区三区婷婷月| 久久久中精品2020中文| 国外成人在线直播| 亚洲国产日韩欧美在线99| 欧美激情久久久| 中文字幕亚洲无线码在线一区| 国产欧美亚洲精品| 欧美黑人巨大精品一区二区| 日韩在线视频免费观看高清中文| 欧美日韩国产麻豆| 欧美成人午夜免费视在线看片| 欧美在线播放视频| 欧美综合国产精品久久丁香| 欧美专区在线观看| 日韩视频免费中文字幕| 久久免费视频在线观看| 97热在线精品视频在线观看| 国产精品日韩欧美| www.日韩av.com| 在线观看91久久久久久| 久久久99免费视频| 精品久久久一区二区| 亚洲一区二区日本| 日韩成人av网址| 欧美日韩国产999| 北条麻妃一区二区三区中文字幕| 91九色视频在线| 欧美激情一区二区三区在线视频观看| 国产成人在线亚洲欧美| 午夜精品福利在线观看| 欧美日韩性视频在线| 国产精品你懂得| 国产成人免费av电影| 亚洲人成电影网站色…| 成人淫片在线看| 超碰97人人做人人爱少妇| 亚洲欧美日本精品| 国产亚洲精品久久久优势| 欧美日韩国产页| 亚洲激情 国产| 中文字幕精品在线| 日韩亚洲国产中文字幕| 国产在线视频一区| 91在线网站视频| 亚洲精品久久久久中文字幕二区| 国产美女久久久| 欧美中文在线字幕| 亚洲最大成人在线| 亚洲91精品在线观看| 亚洲欧美中文日韩在线| 国产一区二区在线免费| 欧美精品在线免费| 日韩av大片免费看| 亚洲精品免费在线视频| 久久亚洲精品视频| 高潮白浆女日韩av免费看| 亚洲欧美在线看| 国产91在线播放九色快色| 欧美高清在线播放| 色综合久久悠悠| 亚洲国产欧美一区二区三区同亚洲| 成人精品久久久| 91九色视频在线| 性亚洲最疯狂xxxx高清| 国产精品免费久久久久影院| 欧美亚洲国产精品| 日韩精品福利网站| 色青青草原桃花久久综合| 亚洲免费电影一区| 亚洲免费一级电影| 亚洲精品一区二区网址| 国产一区欧美二区三区| 欧美在线中文字幕| 91地址最新发布| 欧美激情在线一区| 成人网在线免费观看| 欧美色欧美亚洲高清在线视频| 亚洲欧洲在线播放| 久久久国产成人精品| 久久亚洲精品网站| 久久午夜a级毛片| 午夜精品久久久久久久99热浪潮| 色樱桃影院亚洲精品影院| 欧美另类交人妖| 91国产视频在线播放| 97欧美精品一区二区三区| 久久69精品久久久久久久电影好| 国产香蕉一区二区三区在线视频| 亚洲第一区在线| 日韩在线视频二区| 爽爽爽爽爽爽爽成人免费观看| 精品久久久久久久久久久久久| 国产精品白嫩初高中害羞小美女| 国产啪精品视频网站| 欧美日韩综合视频网址| 亚洲精品日产aⅴ| 日韩美女视频中文字幕| 亚洲午夜久久久影院| 狠狠操狠狠色综合网| 成人激情视频小说免费下载| 91精品国产九九九久久久亚洲| 欧美美女操人视频| 福利微拍一区二区| 欧美性精品220|