久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

當(dāng)javaScript從入門到提高前需要注意的細(xì)節(jié):變量部分

 看見就非常 2012-05-16
到了HTML5的時代,,對javaScript的要求不是降低了,,而是更提高了,。javaScript語言的入門非常簡單,,如果你有java,、C#等C風(fēng)格的結(jié)構(gòu)化語言的基礎(chǔ),,那javaScript你最多半天就可以寫點什么了。但是javaScript是一種動態(tài)語言,,這個特性決定了他在很多方面和java,、C#等語言有極大的不同。很多人說只要會java,、C#就可以在短時間內(nèi)搞定javaScript,,估計一般都是吹牛來的,用javaScript寫點簡單的應(yīng)用沒有問題,,如果要完全比較好的掌握,,那需要真正的理解javaScript的動態(tài)這個特性。
當(dāng)你快速的了解的javaScript入門編程后,,在提高開發(fā)能力之前,,需要的是確保掌握javaScript的編程細(xì)節(jié)或者說特殊性。
而且和css在不同的瀏覽器中有兼容性問題一樣,,javaScript在不同的瀏覽器和版本中也同樣有不同的變化,。


我認(rèn)為javaScript入門之后,向中級(基于面向?qū)ο蟮木幊蹋┌l(fā)展之前,,有兩個問題會對開發(fā)者有影響:類型的動態(tài)和語法的靈活性,。而這兩點的集合,是另很多入門級的javaScript人員造成各種詭異問題的核心,。我這篇文章不討論關(guān)于語法的基礎(chǔ),,關(guān)于核心對象的方法,也不關(guān)心dom的處理,,這些內(nèi)容在網(wǎng)上的任何javaScript教程中都有,,我們討論一個些基于代碼級別但容易寫錯的地方,,為你將來的高質(zhì)量的javaScript奠定些好的基礎(chǔ)。


我以下的內(nèi)容是在IE7/8,、Chrome14,、FireFox10下進(jìn)行測試。同時聲明一個事情,,下面的內(nèi)容的次序比較隨意,,比javaScript還隨意,不是作為一步步的教程給零基礎(chǔ)看的,。需要你至少有些javaScript的代碼經(jīng)驗了,。


關(guān)于變量部分

在javaScript中變量使用var聲明的變量是當(dāng)前作用域的變量,不使用var聲明的則肯定是全局變量,。

Html代碼 復(fù)制代碼
  1. <script type="text/javascript">  
  2.   
  3.     var x = 10; //全局   
  4.     y = 100; //全局   
  5.   
  6.     function fun1() {   
  7.         var m = 99; //局部   
  8.         n = 9; //全局   
  9.     }   
  10.   
  11.     alert(typeof this.x); //number   
  12.     alert(typeof this.y); //number   
  13.     alert(typeof this.m); //undefined   
  14.     alert(typeof this.n); //undefined   
  15.     fun1();   
  16.     alert(typeof this.m); //undefined   
  17.     alert(typeof this.n); //number   
  18.        
  19.   
  20. </script>  

以上代碼說明,,當(dāng)fun1被執(zhí)行后,函數(shù)內(nèi)沒有用var聲明的n變量,,被注冊為全局變量了,。


下面的代碼得到同樣的執(zhí)行效果

Html代碼 復(fù)制代碼
  1. <script type="text/javascript">  
  2.   
  3.     var x = 10; //全局   
  4.     y = 100; //全局   
  5.   
  6.     function fun1() {   
  7.         var m = 99; //局部   
  8.         n = 9; //全局   
  9.     }   
  10.   
  11.     alert(typeof window.x); //number   
  12.     alert(typeof window.y); //number   
  13.     alert(typeof window.m); //undefined   
  14.     alert(typeof window.n); //undefined   
  15.     fun1();   
  16.     alert(typeof window.m); //undefined   
  17.     alert(typeof window.n); //number   
  18.        
  19.   
  20. </script>  

那么,我們可以明顯的得到一個推理,,在全局里面,,window和this是同一個對象指向。

Html代碼 復(fù)制代碼
  1. <script type="text/javascript">  
  2.     alert(this == window);   
  3.     alert(this === window);   
  4. </script>  

那么下面的函數(shù)在其函數(shù)狀態(tài)和對象狀態(tài)時this的指向是不同的,,因為javaScript的動態(tài)的執(zhí)行,,當(dāng)其執(zhí)行到的時候,才去計算上下文情況,。

Html代碼 復(fù)制代碼
  1. <script type="text/javascript">  
  2.   
  3.     function Fo1() {   
  4.         return this;   
  5.     }   
  6.   
  7.     alert(Fo1());   
  8.     alert(new Fo1());   
  9.        
  10. </script>  

同樣作為變量,使用var聲明的變量是不可以刪除的,,沒有使用var聲明的變量是可以刪除的

Html代碼 復(fù)制代碼
  1. var x = 10; //全局   
  2. y = 100; //全局   
  3.   
  4. function fun1() {   
  5.     var m = 99; //局部   
  6.     n = 9; //全局   
  7.     delete m;   
  8.     delete n;   
  9.     alert(typeof m); //number   
  10.     alert(typeof n); //undefined   
  11. }   
  12.   
  13. delete x;   
  14. delete y;   
  15.   
  16. alert(typeof x); //number   
  17. alert(typeof y); //undefined   
  18. fun1();   
  19. alert(typeof n); //undefined  

在javaScript中聲明變量非常的靈活,,但這個靈活性,對控制全局和局部要有所注意,。

Html代碼 復(fù)制代碼
  1. function fun1() {   
  2.     var m = n = 10; //n是全局,,m是局部   
  3.     var x, y = 1k = 10; //xyk都是局部   
  4. }  

而且,有意思的是,,在通常的語言中,,我們對變量總是先定義后使用,不過在javaScript中嘛……看以下代碼

Html代碼 復(fù)制代碼
  1. function fun1() {   
  2.     alert(typeof x); //undefined   
  3.     alert(typeof y); //undefined   
  4.     var x = 10;   
  5.     alert(typeof x); //number   
  6. }   
  7.   
  8. fun1();  

這樣的結(jié)果,,對你來說是完全可以接受和預(yù)期的,,不過……

Html代碼 復(fù)制代碼
  1. function fun1() {   
  2.     alert(x); //undefined   
  3.     alert(y); //提示y沒有定義   
  4.     var x = 10;   
  5.     alert(x); //number   
  6. }   
  7.   
  8. fun1();  
上面的現(xiàn)象很奇怪,如果我們當(dāng)真要用x和y的時候,,編譯器卻給予不同的對待,,認(rèn)為x僅僅是沒有定義(認(rèn)可已經(jīng)聲明了),,而y是真正的不存在。這說明在處理一個范圍的變量的時候,,var無論你在哪里聲明的,,總是一開始就進(jìn)行分配了。對于非var定義的變量嘛,,就沒有這樣的待遇了,,必須等執(zhí)行到才進(jìn)行分配

Html代碼 復(fù)制代碼
  1. <pre name="code" class="html">function fun1() {   
  2.     alert(x); //提示x沒有定義   
  3.     alert(y); //提示y沒有定義   
  4.     x = 10;   
  5.     alert(x); //number   
  6. }   
  7. fun1();</pre>  

更需要注意的是,在函數(shù)內(nèi)部聲明的var變量,,并不局限在聲明的代碼語句塊中,,看看以下代碼

Html代碼 復(fù)制代碼
  1. function fun1() {   
  2.     for (var i = 0; i < 10; i++) {   
  3.   
  4.     }   
  5.     alert(i); //10   
  6. }   
  7.   
  8. fun1();  

所以呢,我們推薦在一個對象/函數(shù)的第一行就把所有的局部變量全部聲明完畢

Html代碼 復(fù)制代碼
  1. function fun1() {   
  2.     var value = 1,   
  3.     arr = [],   
  4.      obj = {},   
  5.     date = new Date(),   
  6.     has = false;   
  7. }  


注意變量之間用逗號隔離,這樣的好處是明顯的,,自己去考慮吧,。
javaScript的語法很靈活,語句后面可以不加;來表示結(jié)束,,這個時候編譯器會講硬回車作為語句的結(jié)束符合

Html代碼 復(fù)制代碼
  1. function fun1() {   
  2.     var x = 10  
  3.     var y = 9  
  4.     return x + y   
  5. }   
  6.   
  7. alert(fun1()); //19  

以上的代碼寫法我不知道有什么特別的好處,,如果是炫耀你知道可以不用;來結(jié)束語句,那就到此為止吧,。因為下面的代碼會得到一個錯誤

Html代碼 復(fù)制代碼
  1. function fun1() {   
  2.     return    
  3.     {   
  4.         Title: "title",   
  5.         Style: "style",   
  6.         Value: "Value"   
  7.     }   
  8. }   
  9.   
  10. alert(typeof fun1());   

因為javaScript會再return后面加一個;

正確的做法是

Html代碼 復(fù)制代碼
  1. function fun1() {   
  2.     return {   
  3.         Title: "title",   
  4.         Style: "style",   
  5.         Value: "Value"   
  6.     };   
  7. }   
  8.   
  9. alert(typeof fun1());   
  
我不好說,,這個原因一定是;不寫引起的,,但我想說明的是,,你要小心javaScript對隨意代碼的隨意處理:你總是應(yīng)該讓javaScript編譯器知道你明確的要干嘛,而不是由他去猜呀猜的,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多