標籤:立即運算式 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‘) })()
小結:當使用Regex, 應該在他的前面加上分號, 在代碼壓縮的時候就不會出錯
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 : 223 };4 console.log( ‘age‘ in myObj ); //true5 console.log( ‘sex‘ in myObj ); //false
本文出自 “ghostwu” 部落格,請務必保留此出處http://ghostwu.blog.51cto.com/11192807/1959334
[js高手之路]立即運算式的多種寫法與注意點以及in操作符的作用