[js高手之路]立即表達式的多種寫法與注意點以及in操作符的作用

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

一、通過小括號把函數聲明變成表達式, 然後再外面加個小括號 就可以達到立即調用的效果

1         (function(){

2             console.log( 'ghostwu' );

3         })();


二、!號 把函數聲明轉化成表達式,再調用


1         !function(){

2             console.log( 'ghostwu' );

3         }();


三、+號 把函數聲明轉化成表達式,再調用


1         +function(){

2             console.log( 'ghostwu' );

3         }();


四、-號 把函數聲明轉化成表達式,再調用


1         -function(){

2             console.log( 'ghostwu' );

3         }();


五、波浪符 把函數聲明轉表達式,再調用


1         ~function(){

2             console.log( 'ghostwu' );

3         }();


六、把調用寫在表達式裏面


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操作符: 判斷屬性是否在一個對象或者他的原型上

function CreateObj(){
            // this.name = 'ghostwu'; //true
        }
        CreateObj.prototype.name = 'ghostwu'; //true
        var obj = new CreateObj();
        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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章