磨刀不誤砍柴工

          合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。

             ::  ::  ::  :: 管理
          一:null,undefined
          null是關鍵字
          null含義是“非對象",常用來描述“空值”
          type of null;                 =>   object
          它可以表示 數字,字符串,對象是“無值”的
          undefined是預定義的全局變量,它的值就是“未定義”。(與null不一樣,它不是關鍵字)
          undefine 表明更深層次的“空值”。表明變量沒有初始化。
          typeof undefined;       => undefined
          如果查詢對象屬性或數組元素的值返回 undefined ,說明這個屬性或元素不存在
          如果函數沒有任何返回值,則返回undefined
          引用沒有提供實參的函數形參的值,也會得到 undefined
          null與undefined 都不存在任務屬性和方法

          null == undefined;           =>true
          null === undefined;         =>false
          null == false;                   => false 注意 null 與 false不等,但在希望是布爾值的地方,null是假值
          null ? 1 : 0;                      =>0
          undefined == false;         =>false 注意 undefined 與 false不等,但在希望是布爾值的地方,undefined是假值
          undefined ? 1: 0;             =>0

          二:運算符 typeof
          typeof是一元運算符,放在其它單個操作數的前面,操作數可以是任意類型。返回值為表示操作數類型的一個字符串
          typeof undefined;                  => undefined
          typeof null;                            =>object
          typeof true或false;                =>boolean
          typeof 任意數字或NaN;         =>number
          typeof 任意字符串;                =>string
          typeof 任意函數;                    =>function
          typeof 任意內置對象(非函數);         =>object
          typeof 任意宿主對象;            =>由編譯器各自實現的字符串,但不是“undefined”,“boolean”,“string”,或"number"

          常這樣用:
          (typeof value == 'string')...
          typeof運算符還可以帶括號,看起來更像是函數
          typeof (i)

          三:運算符instanceof
          instanceof 運算符希望左邊操作數是一個對象,右邊操作數是一個對象的類。如果左邊的對象是右邊類的實例,則返回true,否則返回false
          需要注意:所有對象都是 Object 實例。
          計算過程:計算 o instanceof f,會首先計算 f.prototype,然后中在原型鏈中查找 f,如果找到,那么o 是f的實例。表達式返回true。
          原型鏈。。

          四:運算符==和===
          javascript對象的比較是引用的比較,而不是值的比較。對象和其本身相等,和其它任何對象都不相等。
          === 是嚴格相等運算符,它首先計算兩個操作數的值,然后比較兩個值。比較過程中沒有任何類型轉換
          • 如果兩個值類型不同,則它們不相等
          • 如果兩個值,一個是null,一個是undefined,則它們不相等
          • null===null;                           =>true
          • undefined === undefined;     =>true
          • null === undefined;               =>false
          • 如果其中一個值是 NaN,或者兩個都是NaN,則它們不等。(NaN與其它任務值都是不等的,包括它本身,通過 x !==x 可以判斷x 是否為NaN)
          • 如果兩個值為數字且數值相等,則它們相等。同時 0===-0返回true
          • 如果兩個值都是字符串,且所含的對應位上的16位數完全相等,則它們相等。如果它們的長度和內容不同,則它們不等
          • 如果兩個引用指向同一個對象,數組或函數,則它們相等。如果指向不同的對象,盡管它們的屬性完全一樣,也是不相等的

          ==是相等運算符,但比較并不嚴格。如果兩個操作數不是同一類型,則會嘗試一些類型轉換,然后比較.
          • 如果兩個操作數的類型相同,則與 ===的比較規則一樣
          • 如果兩個操作數的類型不同,也可能認為它們相等,類型轉換規則如下
          • 如果一個值為null另一個為undefined,則它們相等
          • 如果一個值為數字,另一個為字符串,先將字符串轉換為數字,然后再用轉換后的值比較
          • 如果其中一個值是true,則將其轉換為1再進行比較。如果是false,則轉換成0
          • 如果一個值是對象,另一個值為數字或字符串,則將對象轉換成原始值后再比較
          • 其它不同類型間的比較均不相等
          例:“1” == true;
          先將true 轉為 1,然后再將 “1”轉為 1,比較結果為 true

          五:運算符in
          in 運算符希望它的左操作數是一個字符串,或者可以轉換成字符串。右操作數是一個對象。如果右側的對象擁有一個名為左側操作數值的屬性名,則返回true

          六:運算符 eval()
          eval()只有一個參數,如果傳入的不是字符串,則直接返回這個參數。如果是字符串,則將其作為javascript代碼進行編譯。如果編譯失敗,則拋出一個語法錯誤異常。如果編譯成功,則開始執行這段代碼。并返回字符串中的最后一個表達式或語句的值。如果最后一句沒有值,則返回undefined。
          eval()使用了調用它的作用域環境。
          因此:
          var x = 1;
          eval('x');     => 1
          eval('var y=3;');
          y;             =>3
          ECMAscript 3標準規定不允許給eval()賦與別名。如果通過別名來調用的話,將會拋出一個異常。
          posted on 2013-07-16 14:39 liwei5891 閱讀(232) 評論(0)  編輯  收藏 所屬分類: Javascript
          主站蜘蛛池模板: 青海省| 云安县| 鹿邑县| 涡阳县| 泾源县| 喜德县| 黎平县| 屏山县| 张家界市| 上杭县| 芮城县| 青神县| 临泉县| 罗江县| 敦化市| 漾濞| 舞钢市| 堆龙德庆县| 大足县| 富民县| 密云县| 乌兰浩特市| 易门县| 盈江县| 临泉县| 鹰潭市| 平果县| 会理县| 叙永县| 茂名市| 丹巴县| 罗江县| 青川县| 吉安市| 宿州市| 罗城| 玉林市| 闻喜县| 秦安县| 和平县| 万荣县|