首頁  >  文章  >  web前端  >  JavaScript不常用的知識點

JavaScript不常用的知識點

巴扎黑
巴扎黑原創
2017-07-22 15:33:11874瀏覽

語法

  語句表達式

      句子是完整表達某個意思的一組詞,由一個或多個短語組成,他們之間由標點符號或連接詞連接起來。

      語句相當於句子,表達式相當於片語,運算子則相當於標點符號和連接詞。

          JavaScript 中表達式可以傳回一個結果值。

            var a = 3 * 6;

                         b;

             var a = 3 * 6;     var a = 3 * 6;    = a;  

陳述語句,因為它宣告了語句

                a = 3 *# 6; 

語句的結果值

      表達式的副作用

        表達式的副作用

        運算  var b = a++;

#           a;   // 43

        〠〠  a++   

先傳回變數

a

的目前值

42 (在將值賦給b),#然後將a 的值加上1;          ++ 在前面時,如++a

#將(a遞增)產生在表達式傳回結果之前#而 a++ 的副作用則產生在之後。           ++a++ 會產生

ReferenceError錯誤## ##ReferenceError錯誤

## #          var b = (a++);

            a;  b; // 42

 

      可以使用語句系列運算子將多個獨立的表達式語句串連成一個語句:

          var a = 42,b;    var a = 42,b;

                            a ; // 43

            b; // 43

#        delete

        delete

      》

        var obj = {

                             obj.a;         // 42

         obj.a;   // true

        obj.a;             function vowels(str){

              var matches;

              if(str) {

        

##                  matches = str.match(/[aeiou]/g);

#                  if(matches) {

                            return                          

            }

                  〴〔       〔  一項" ); // ["e","o","o"]

      利用賦值語句的副作用將兩個if 語句合二為一

                       var matches;

                  ///

提取所有元素字母

#    // if(str && (matches = str.match(/[aeiou]/g))){                    return matches;#      return

##          }

        

      上下文規則

#           1.##         1.##                   〴量

              //

假定函數bar()

已經定義

                             ]         foo: bar()

#                 }

                                   // 假定函數bar() 已經定義

                {

#                   

                }

#                         [] + {}; / / "[object Object]"

              {} + []; // 0                           另外        H             …]常見物件               ] ##              function getData() {                     // ..##       // ..##                               return {                                                       b: "foo"

                      ;

}

                var { a , b } = = getData();

#                         console.log(a,b); // 42 "foo"

                {...} 也可以用作函數命名參數的物件解構,方便隱式地物件屬性賦值。

              function foo({a,b,c}){

                     ##不在需要這樣:

                //  var  a = obj.a, b = obj.b, c = obj.c

                                    }

                        ##                                                 a: 42,

                  );   // 42 "foo" [1 ,2,3]

 

      運算子優先權

                         var b = "foo" ;

          a && b;  // "foo"

       

##          短路

#        對於

&&

|| 來說,如果從左邊的運算元能夠得出結果,就可以忽略右邊的

運算元,我們將這個現象稱為短路。

            a && b || c ? c || b ? a : c && b : a

          因為 && 運算子的優先級高於#||, ##|| #的優先順序又高於? :。             (a && b || c) ? (c || b) ? a : (c && b) : a

#       ##         

運算子的關聯不是從左到右就是從右到左,這取決於組合是從左開始

還是從右開始。

          var  a = foo() && bar();

       #          var a , b , c;

                     其實是這樣處理的

  a = (b = ( c = 42))

             var  a  = 42;               var c = false;

           var d = a && b || c ? c || b ? a : c && b : a;

          d;   // 42##              #?

((c || b) ? a : (c && b)) : a

          1. (a && b)

結果為

「foo」.

            2."foo"  || c

結果為

#foo 」.

            3,

第一? 中 “foo” 為真。

            4.(c || b) 結果為

"foo".            5.第二個 ? 中,

“foo” 為真值。

            6.a

的值為#42在編譯階段發生錯誤叫做早期錯誤,語法錯誤是早期錯誤的一種,使用 try..catch

來捕獲

        語法錯誤瀏覽器一般報 SyntaxError

     提前使用變數

        死區

Zo #作用域區塊          {

                      let a;

          }

      函數參數

         function foo(a = 42, b a + 1  .log(a,b)

        }

        foo(); //  42 43

        foo(undefined);      foo(undefined); oo(5);     // 5 6

        foo( void 0, 7);       // 42 7        foo(null )     

      finally

中的程式碼總是會在

try

之後執行,如果有

catch

#的話則在

catch

#之後執行。

      可以將finally  中的程式碼看做一個回呼函數,總是在最後一個執行。

    switch

#      可以把它看做 if..else if.. else 的簡化版。

        switch (a) {

                //

執行一些程式碼

              back;

            case 42:

                           back;

                                 // 執行一些程式碼

        }

 

 

#    混合環境

#    混合環境

#"動態建立script,

標籤,將其加入到頁面的

DOM #。           var greeting = "Hello World";                       el.text = "function foo() { alert(greeting); ##el.src

的值設定為

URL

,就可透過