立即表示式的多種寫法與注意點以及in操作符的作用
阿新 • • 發佈:2019-01-17
立即表示式,在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