海水正藍

          面朝大海,春暖花開
          posts - 145, comments - 29, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          日歷

          <2013年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          文章檔案

          搜索

          •  

          1. Javascript沒有類的概念。一般使用原型鏈繼承(prototypal inheritance)來模擬類。

          2. 除了null和undefined之外的任何數據類型都能表現成Object (behave like an object),包括Number類型和Function類型。


          var n = 42;
          function f() { alert("foo"); };

          alert(
          "n is " + n.toString()); // "n is 42"
          alert(f.name + " is a function"); // "f is a function"


          注意,是“表現為object”,而不是“是object”。事實上,number, string和boolean是基本類型(primitives),除了這三個之外的都可以算作object,比如一個正則表達式也是一個object。 當需要訪問基本類型變量的屬性時,那些基本類型變量將被臨時轉換成object。 例如:

          "foobar".big();
          // is equivalent to
          new String("foobar").big();
          .
          14.toFixed();
          // is equivalent to
          new Number(3.14).toFixed()

          另外,不能強行給基本類型變量(number, string, boolean)加上私有屬性。

          var a = "mystring",
              b 
          = new String( "mystring" );

          Object.defineProperty( b, 'foo', { value: 
          42, enumerable: false });
          console.log(b.foo); 
          // 42
          Object.defineProperty( a, 'foo', { value: 42, enumerable: false });
          // TypeError: Object.defineProperty called on non-object

          // trying another way:
          a.foo = 42;
          // remember, this is equivalent to:
          //
           new Number(a).foo = 42;
          //
           …so the 'foo' property is defined on the wrapper, not on 'a'
          console.log(a.foo); // undefined

          3. 如果變量名前不加上var,那么這個變量就是全局的。

          function setGlobal() {
            a 
          = 42;
          }

          function setLocal() {
            
          var b = 23;
          }

          setGlobal();
          alert(a); 
          // 42

          setLocal();
          alert(b); 
          // ReferenceError: b is not defined

          4. this指針是由調用函數賦予的, 而不是由被調函數自身定義的。 例如:


          var a = {}, b = {};

          a.foo 
          = 42;
          b.foo 
          = 18;
          a.alertFoo 
          = function() { alert(this.foo); };

          a.alertFoo(); 
          // 42
          a.alertFoo.call(b); // 18

          5. 嚴格的相等判斷應該使用===。例如 :

          0 == false 為真, 但是 0 === false 為假。

          6. 0, undefined, null, "", NaN 都是假值 (falsy)。
          這些值全都等同于false,但他們之間不能相互替換。

          7. 變量聲明會被提升到當前作用域的頂端。 例如:下述代碼中,你認為調用foo函數會返回什么?

          var a = 2;

          function foo() {
              
          return a;
              
          var a = 5;
          }


          它將返回undefined。 上述代碼等同于下述代碼:

          var a = 2;

          function foo() {
              
          var a; // 'a' declaration is moved to top
              return a;
              a 
          = 5;
          }
          另一個例子: 下述代碼中,調用函數foo后變量a的值是什么?
          var a = 42;

          function foo() {
              a 
          = 12;
              
          return a;
              
          function a(){}
          }

          答案是42。因為foo函數中變相聲明了a變量,因此a成了局部變量了。

          function foo() {
              
          function a() {} // local 'a' is a function
              a = 12// local 'a' is now a number (12)
              return a; // return the local 'a' (12)
          }

          8. 參數在函數聲明中可以省略, 例如:

          function hello(name, age) {
            alert(
          "Hello "+name+", you’re "+age+" years old!");
          }

          hello(
          "Anon"42); // "hello Anon, you’re 42 years old!"
          hello("Baptiste"); // "hello Baptiste, you’re undefined years old!"
          hello("Bulat"2442); // "hello Bulat, you’re 24 years old!"

          9. 對于字符串,使用雙引號""和單引號''的效果是一樣的。

          10. Javascript代碼可以在瀏覽器環境之外運行, 比如在Terminal或者HTTP服務器上。(例如 Node.js)


          原文出自:

          http://www.cnblogs.com/newyorker/archive/2013/01/18/2865820.html




          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 乌兰县| 报价| 陇西县| 平顶山市| 广州市| 临汾市| 临邑县| 大余县| 赤水市| 逊克县| 海林市| 仁化县| 兰州市| 资中县| 德江县| 彭泽县| 泰来县| 营口市| 灵寿县| 托克逊县| 望谟县| 广昌县| 五台县| 海原县| 涟源市| 桦川县| 汕头市| 历史| 丰县| 汨罗市| 清水县| 娄底市| 共和县| 光山县| 米林县| 集安市| 南通市| 马鞍山市| 贺州市| 会宁县| 北辰区|