亚洲欧美成人综合一区_国产精品一区二区无码_亚洲风情偷拍区_成?人免费无码视频在线看

在線客服與您一對一交流

!function foo()、(function(){}())與(function(){})()

1. (function(){}())與(function(){})()

這兩種寫法,都是一種 立即執(zhí)行函數(shù) 的寫法,即IIFE (Immediately Invoked Function Expression)。這種函數(shù)在函數(shù)定義的地方就直接執(zhí)行了。

通常的函數(shù)聲明和調(diào)用分開的寫法如下:

function foo() {/*...*/}     // 這是定義,Declaration;定義只是讓解釋器知道其存在,但是不會運行。

foo();                   // 這是語句,Statement;解釋器遇到語句是會運行它的。

普通的函數(shù)聲明function foo(){}是不會執(zhí)行的。這里如果直接這樣寫function foo(){}()解釋器會報錯的,因為是錯誤的語法。

IIFE函數(shù)的調(diào)用方式通常是將函數(shù)表達式、它的調(diào)用操作符、分組操作符放到一個括號內(nèi),來告訴解釋器這里有一個需要立即執(zhí)行的函數(shù)。否則通常情況下,解析器遇到一個function關(guān)鍵字,都會把它當做是一個函數(shù)聲明,而不是函數(shù)表達式。

如下幾種寫法都是可以的:

(function foo(){/*...*/}());

(function foo(){/*...*/})();

!function foo() {/*...*/}();

+function foo() {/*...*/}();

-function foo() {/*...*/}();

~function foo() {/*...*/}();

在需要表達式的場景下,就不需要用括號括起來了:

void function(){/*...*/}();

var foo = function(){/*...*/}(); 

true && function () { /*...*/ }();

0, function () { /*...*/ }();

void聲明了不需要返回值,第二個則將IIFE函數(shù)的返回值賦給了foo。第三、第四個都是明確需要表達式的場景,所以解析器會認識這種寫法。

 

對于IIFE函數(shù),也可以給它們傳入?yún)?shù),例如:

(function foo(arg1,arg2,...){...}(param1,param2,...));

對于常見的

(function( $ ){...})(jQuery);

即是將實參jQuery傳入函數(shù)function( $ ){},通過形參 $ 接收。

上述函數(shù)中,最開始的那個括號,可能會由于js中自動分號插入機制而引發(fā)問題。例如:

a  =  b  +  c 

;(function  () { 

  // code 

})();

如果沒有第二行的分號,那么該處有可能被解析為c()而開始執(zhí)行。所以有的時候,可能會看到這樣的寫法:;(function foo(){/…/}()),前邊的分號可以認為是防御型分號。

 

2. 第二類是$(function(){});

(function()/.../);是(function()/.../);是(document).ready(function(){/…/})的簡寫形式,是在DOM加載完成后執(zhí)行的回調(diào)函數(shù),并且只會執(zhí)行一次。

$( document ).ready(function() {

   console.log( "ready!" );

});   

$(function() {

   console.log( "ready!" );

});

起到的效果完全一樣。

在一個頁面中不同的js中寫的$(function(){/…/});函數(shù),會根據(jù)js的排列順序依次執(zhí)行。

相關(guān)文章:

  • 帝國CMS是什么程序 帝國CMS是一套開源的靜態(tài)頁面程序,憑借超高的擴展性,很多知名的新聞?wù)军c、行業(yè)站點都是應(yīng)用的帝國CMS后端。因為帝國CMS和dedecms一樣都是生成靜態(tài)頁面的,所以非常利于...

  • 域名解析DNS分為顯性URL和隱形URL,顯性URL和隱形URL有什么區(qū)別?隱形URL和顯性URL哪個更有利于SEO?顯性URL相當于域名了302重定向,隱形URL使用iframe框架技術(shù)隱藏真實目標地址,顯性URL更有利于...

  • 在常見的CMS系統(tǒng)中,我對dedecms算是比較熟悉的,自己網(wǎng)站用的也是這個系統(tǒng)。系統(tǒng)功能強大使用靈活,相信這也是它受到大多數(shù)中小站長青睞的原因。 再好的系統(tǒng)也有照顧不周的地方,很多站...

  • 這篇文章主要為大家詳細介紹了dedecms后臺增加php導(dǎo)出excel功能實現(xiàn)辦法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,有需要的朋友可以收藏方便以后借鑒。 不少朋友希望織夢的后臺...

  • 第一次使用的插件是 pdfobject.js 百度網(wǎng)盤下載地址:http://pan.baidu.com/s/1kUPhYdT 加載 script src=/style/js/pdfobject.js /script script type=text/javascript window.onload = function (){ var success = new PDFObject({ url: pdf文件地...

  • 網(wǎng)上有一種方法是copy+unlink來移動文件,但是遇到大文件時會消耗大量時間,對性能不怎么友好,可以使用rename()來移動文件,速度非???關(guān)于rename()函數(shù) bool rename ( string $oldname , string $newname...

  • 基于我們公司可選的幾種推廣方式: 一、關(guān)鍵詞優(yōu)化排名推廣(推薦) 指定關(guān)鍵詞推廣,按天付費,推廣我們業(yè)務(wù)中最重要的一些關(guān)鍵詞,達到百度首頁才收費,大概一個關(guān)鍵詞10元/天左右。...

  • 插件介紹 wordpress程序網(wǎng)站在發(fā)布文章時可以給每一片文章添加與之相關(guān)的TAG標簽,對于TAG標簽可以生成很多頁面,增加搜索引擎對內(nèi)容的抓取量。 WP Auto Keywords插件就是一款能自動給文章添加...

  • 5.7 生成列表頁 改動 include/arc.listview.class.php 1.先設(shè)置 關(guān)閉副欄目(在系統(tǒng)----系統(tǒng)基本參數(shù)性能選項里) 2.一般網(wǎng)站不需要 欄目交叉 交叉 所以 找到94行注釋掉: //獲得交叉欄目ID /*if($this-Type...

  • 使用preg_replace將刪除所有空白(包括制表符等) $string = user na me $string = preg_replace(/\s+/, , $string); echo $string; // username preg_replace(/\s/u, ,$string) u (PCRE8) 此修正符打開一個與perl不兼容的附加功能. 模式...

  • 公司:西安蟠龍網(wǎng)絡(luò)科技有限公司
  • 聯(lián)系人:張經(jīng)理
  • 手機/微信:
  • Q Q: 點擊這里給我發(fā)消息
  • 地址:西安市雁塔區(qū)唐延南路11號逸翠園i都會