1. 程式人生 > >立即表示式的多種寫法與注意點以及in操作符的作用

立即表示式的多種寫法與注意點以及in操作符的作用

立即表示式,在javascript中非常常見, 採用立即表示式可以形成一個區域性作用域, 常配合閉包實現模組化程式設計等其他用途,接下來我們看看,在大多數的框架中,立即表示式都有哪些寫法,以及需要注意的點,另外再介紹下in操作符的用法

1、 通過小括號把函式宣告變成表示式, 然後再外面加個小括號 就可以達到立即呼叫的效果

1         (function(){
2             console.log( 'ghostwu' );
3         })();

2、!號 把函式宣告轉化成表示式,再呼叫

1         !function(){
2             console.log( 'ghostwu' );
3 }();

3、+號 把函式宣告轉化成表示式,再呼叫

1         +function(){
2             console.log( 'ghostwu' );
3         }();

4、-號 把函式宣告轉化成表示式,再呼叫

1         -function(){
2             console.log( 'ghostwu' );
3         }();

5、波浪符 把函式宣告轉表示式,再呼叫

1         ~function(){
2             console.log( 'ghostwu' );
3 }();

6、把呼叫寫在表示式裡面

1         (function(){
2             console.log( 'ghostwu' );
3         }());

使用立即表示式,需要注意的地方:

一、1被當做函式呼叫, 原因在與 沒有用分號 把語句隔斷,產生歧義

1 //報錯, 1被當做函式 1()
2         var n = 1
3         (function(){ console.log( 'ghostwu' ) })()
1         var n = 1;
2         //
(function(){ console.log( 'ghostwu' ) })() 3 ;(function(){ console.log( 'ghostwu' ) })()

上例為正確的做法

二、下面這種寫法,兩個立即表示式, 沒有用分號隔開,同樣產生歧義,報錯

1          (function(){ console.log('ghostwu1') })()
2         (function(){ console.log('ghostwu2') })()

正確的寫法:

1         ;(function(){ console.log('ghostwu1') })()
2         ;(function(){ console.log('ghostwu2') })()

小結:當使用正則表示式, 應該在他的前面加上分號, 在程式碼壓縮的時候就不會出錯

in操作符: 判斷屬性是否在一個物件或者他的原型上
1         function CreateObj(){
2             // this.name = 'ghostwu'; //true
3         }
4         CreateObj.prototype.name = 'ghostwu'; //true
5         var obj = new CreateObj();
6         console.log( 'name' in obj );
1         var myObj = {
2             age : 22
3         };
4         console.log( 'age' in myObj ); //true
5         console.log( 'sex' in myObj ); //false

相關推薦

立即表示式多種寫法注意以及in操作符作用

立即表示式,在javascript中非常常見, 採用立即表示式可以形成一個區域性作用域, 常配合閉包實現模組化程式設計等其他用途,接下來我們看看,在大多數的框架中,立即表示式都有哪些寫法,以及需要注意的點,另外再介紹下in操作符的用法 1、 通過小括號把函式宣告變成表示式, 然後再外面加個小括號 就可以達到

Spark2.10中使用累加器、注意以及實現自定義累加器

累加器(accumulator)是Spark中提供的一種分散式的變數機制,其原理類似於mapreduce,即分散式的改變,然後聚合這些改變。累加器的一個常見用途是在除錯時對作業執行過程中的事件進行計數。 累加器簡單使用 Spark內建的提供了Long和Double型別的累加器。下面是一個簡單的使

總結網站Web端互動式設計的一些誤區注意

互動設計的5個常見錯誤 豔麗的圖片、順暢的滑鼠懸停效果和意外的動畫,不再那麼容易引起使用者注意了。但難題卻沒有解決——如何創造令人愉快的使用者體驗,讓使用者面帶笑容完成轉化?如果你對常見的設計陷阱有所警覺,就能更少犯錯。 為了方便——可能也為了讓你知道你不是獨自

微控制器控制板的設計原則注意

  微控制器控制板在設計過程中,需要遵循的如下原則:   (1) 在元器件的佈局方面,應該把相互有關的元件儘量放得靠近一些,例如,時鐘發生器、晶振、CPU的時鐘輸入端都易產生噪聲,在放置的時候應把它們靠近些。對於那些易產生噪聲的器件、小電流電路、大電流電路開關電路等,應儘量

ORA-01791: 不是 SELECTed 表示式(distinct使用注意

not a Selected expression:不是一個查詢表示式; 原始報錯sql: select distinct report.fid as "reportId

SOCKET中send和recv函式工作原理注意

send函式工作原理:  send函式只負責將資料提交給協議層。 當呼叫該函式時,send先比較待發送資料的長度len和套接字s的傳送緩衝區的長度,如果len大於s的傳送緩衝區的長度,該函式返回SO

執行緒程序區別以及執行緒作用

1 程序與執行緒 (1)程序:正在進行中的程式。 (2)執行緒:就是程序中一個執行單元或執行情景或執行路徑,負責程序中程式執行的控制單元。   一個程序中至少要有一個執行緒。 當一個程序

mybatis中LIKE模糊查詢的幾種寫法以及注意

mybatis中對於使用like來進行模糊查詢的幾種方式: (1)使用${...} 注意:由於$是引數直接注入的,導致這種寫法,大括號裡面不能註明jdbcType,不然會報錯 org.mybatis.spring.MyBatisSystemException: nested

[下屬談話]管理者下屬談話的技巧以及注意

1、談話內容要系統化,先要有大綱 2、時間控制在半小時以內,談話單次內容不能過多 3、語速不能太快,思維不能太跳躍,給下屬反映時間和思考時間 4、多鼓勵少批評 5、談話先讓下屬講,多用提問方式解決問題

線性規劃中的單純形法法(原理、步驟以及matlab實現)(三)

應用 最大化 round 並不是 兩個 生產 陰影 3.3 ima 在本系列的第三篇博客中,筆者討論對偶單純形法的相關理論和應用 2.3 Dual Simplex Method(對偶單純形法) Contents   2.3.1 對偶問題產生的原因   2.3.2 對偶問題的

JavaScript中的數組遍歷forEach()map()方法以及兼容寫法

修改 console ron fine 默認 for typeof object 方法 原文鏈接:https://www.cnblogs.com/jocyci/p/5508279.html 原理: 高級瀏覽器支持forEach方法語法:forEach和map都支持2個

使用mina傳遞物件注意問題以及常見報錯異常處理

最常見的異常,一個是不能序列化java.io.NotSerializableException:,另一個就是java.io.InvalidClassException,還有java.nio.charset.MalformedInputException   1. 首先是客戶端和服務

String、Object、包裝類的常用方法以及注意

   String類 1.1String的兩種例項化方式      a.直接賦值 String str=“hello”;      b.通過構造方法例項化String物件 1.2字串相等比較    

【PHP學習】靜態檔案快取綜合小案例以及一些函式的注意

靜態快取技術 儲存在磁碟上的靜態檔案,用PHP生 成資料到靜態檔案中。原理如下: php中的快取操作 生成快取 獲取快取 刪除快取 甩一段別人的程式碼 class Response{ static public function datas($cod

微信小程式注意快捷鍵

注意點1. 微信對小程式的要求是整體大小不能超過1MB。 2. .json 是配置檔案,其內容必須符合JSON格式,所以檔案內部不允許有註釋。 3. app.json 是全域性配置檔案,微信小程式中的每一個頁面的【路徑+頁面名】都需要寫在 app.json 的 pages 中,且 pages 中的第一個頁面是

YUVRGB互轉各種公式 (YUVRGB的轉換公式有很多種,請注意區別!!!)

一、 公式:基於BT.601-6       BT601 UV 的座標圖(量化後): (橫座標為u,縱座標為v,左下角為原點)           通過座標圖我們可以看到UV並不會包含整個座標系,而是呈一個旋轉了一

compass的安裝及使用,以及常見命令列指令注意事項、Compass核心模組

1、compass官網:compass-style.org compass是一個開源的書寫框架 正確安裝完ruby之後,使用gem install compass安裝 1、compass create learn-compass-init:通過compass直接建立一個compass

Springboot 中 Redis快取使用 @Cacheable不生效的原因,以及@Cacheable 的一些注意

Springboot 中 Redis快取使用 @Cacheable不生效的原因,以及@Cacheable 的一些注意點 1、有如下程式碼 // get 方法呼叫了 stockGive 方法,stockGive 方法使用了快取 // 但是每次執行get 方

使用螞蟻金服前端sad的坑以及注意

使用 sad-cli 初始化前端專案 全域性安裝:sudo npm i @souche-f2e/sad-cli --registry=http://registry.npm.souche-inc.com -g 在 main 資

?符號 和 ?? 符號的作用。String的一些建立方式。結構體類的區別。函式過載注意及運算子的過載

? 符號:用於為 int,double,bool等無法賦值為null的資料型別進行null賦值 如: int i; //預設為0 int? i; //預設為Null ?? 符號:用於判斷一個變數為Null時,給其賦一個值