JS學習-常見問題

    區分大小寫

      JS中方法和變量都是區分大小寫的,例如

        Function my(){}和function My(){}表示兩個方法。

      JS的核心對象也是區分大小寫的,例如Array和Object。

      自己使用過的語言中除瞭VB、VB.Net不區分外(自動轉化),C++、C#、Java都區分大小寫。

      單引號、雙引號

        JS中對單引號和雙引號的使用沒有特殊的區別,都可以用來創建字符串,但作為一般性規定,一般使用單引號,但是因為XHTML規范要求所有屬性值都必須使用雙引號括起來。這樣在JS使用單引號,而對XHTML屬性使用雙引號會使混合混合兩者代碼更方便也更清晰。

        在JS中單引號中可以包含雙引號,反之雙引號也可以包含單引號,但是下面這種在JS中會報錯:””b””會報錯,需要””+”b”+””

      下例:測試顯示的temp和temp2的值

      <script language=”javascript”type=”text/javascript”>

      /*var array =new Array();*/

      var temp=’aj”abc”‘;

      var temp2=”a’acb'”;

      function Init(){

      alert(temp);

      alert(temp2);

      };

      </script>

        括號

          括號可以是分隔符也可可以是表達式

          分隔符大傢都熟悉

           (1+3)*3等於12,優先運算括號中的內容

          表達式

           (function(){})();

           function之前的一對括號作為分隔符,後面的括號表示立即執行這個方法,如下例,不需要onload=”Init();”進行調用

         例如:

        <script language=”javascript”type=”text/javascript”>

        var temp=’aj”abc”‘;

        var temp2=”a’acb'”;

        (function Init(){

        alert(temp);

        alert(temp2);

        })();

        </script>

          函數調用和引用

             var foo=example();foo表示函數的返回值。

             var foo1=example;表示將函數的引用賦給一個值foo1。如:window.onload=example;

            換行

               無論使用哪種引號創建字符串,字符串中間不能包含強制換行符。

               vartemp=’

            A list

            ’;

              上面的代碼將導致解析錯誤。想按上面的方式添加換行符則有兩種方法

              1、通過\來轉義換行符以告知瀏覽器改行是連續的:

               vartemp=’

            A list

            \

               

              \

                 

            ’;

              2、使用字符串連接符+

               Vartemp=’

            A list

            ’+

               ‘

              ’+

                 ‘

            ’;

              重載

                 JS中不支持重載,因此這裡所說的重載其實更類似於替換,且在兩個函數同名的情況下(和參數無關),下面的函數會覆蓋掉上面的函數。

                 例如:

                 functionmyFunction(a){…..}

                  function myFunction(a,b){…..}

                這樣後一個方法將覆蓋前一個,雖然不報錯,但是JS中如何實現類似重載呢?使用arguments

              arguments是JavaScript裡的一個內置對象,包含瞭調用者傳遞的實際參數,但不局限於函數聲明所定義的參數列表,而調用時隻它和數組一樣有個length屬性。 

                我們暫且把它當“數組”來理解吧,我們根據該數組的長度以及其元素的類型來選擇不同的實現,從而模擬瞭重載。 

                JS:

                functiongetDate(){

                  if(arguments.length==0){

                   var date=new Date().toLocaleDateString();

                  return”您沒有輸入參數,現在時間:”+date ;

                   }

                   if(arguments.length==1){

                     if(arguments[0].constructor ==Date){

                    return “您輸入的參數是Date類型,現在時間是:”+arguments[0].toDateString();

                  }

                  if(arguments[0].constructor ==String){

                   return “您輸入的參數是String類型,現在時間是:”+arguments[0];

                  }

                 }

               }

               調用如下:

                getDate()

                getDate(new Date())

                getDate(“星期一”)

                作用域、閉包

                  所謂作用域就是指對某一屬性或方法具有訪問權限的代碼空間。變量的作用域無非就是兩種:全局變量和局部變量。我們做項目過程中接觸很多瞭。

                  Javascript語言的特殊之處,就在於函數內部可以直接讀取全局變量。

                  例如:

                  var n=91;

                  functionmyFunction(){

                   alert(n);

                  }

                  myFunction(); // 1

                  另一方面,在函數外部自然無法讀取函數內的局部變量。如下例

                  FunctionmyFunction(){

                   var temp=”abc”;

                  }

                  function myFunction(){

                   var n=1;

                  }

                  alert(n); //error

                  這裡有一個地方需要註意,函數內部聲明變量的時候,一定要使用var命令。如果不用的話,你實際上聲明瞭一個全局變量!

                  閉包

                  閉包是與作用域相關的一個概念,它指的是內部函數即使在外部函數執行完成並終止後仍然可以訪問其外部函數的屬性。

                  簡單點閉包就是能夠讀取其他函數內部變量的函數。

                  由於在Javascript語言中,隻有函數內部的子函數才能讀取局部變量,因此可以把閉包簡單理解成“定義在一個函數內部的函數”。所以,在本質上,閉包就是將函數內部和函數外部連接起來的一座橋梁。

                總結

                  這裡總結的JS常見問題其實就是JS入門需要註意的地方和一些基礎,首先明白這些基礎內容,層層遞進,也能使以後更深一步的學習提供幫助。

發佈留言