區分JavaScript中的undefined,null和NaN

來源:互聯網
上載者:User

區分underfined,null和NaN

先看看下面語句的運行結果:

 1: var a; 
 2: alert(a); //顯示"undefined"
 3: alert(typeof a); //顯示"undefined"
 4: alert(b); //顯示"undefined"

以上說明a的值和類型都是'underfined'

 1: var a = null; 
 2: alert(a); //顯示"null"
 3: alert(typeof a); //顯示"object"

以上說明賦值為null的變數,值為null,類型為object

 1: var b;
 2: alert(null==b); // 顯示"true"
 3: alert(null == undefined); //顯示"true "

以上說明undefined與null是相等的

 1: var a1; //值和類型都是'underfined'
 2: var a2 = null; //值為null,類型為object
 3: alert(a1 == a2); //顯示"true"

以上兩例說明null和underfind很相似,至少undefined與null是相等的。

 1: alert(100 + null); //顯示"100"
 2: alert(100 + undefined); //顯示"NaN" 

以上說明null和underfind雖然很相似,但還是有小區別的,嘿嘿!

underfined: 未知的變數名,或未賦值的變數。
null: 特殊的object
NaN: 特殊的number

 1: alert(typeof(undefined));//顯示 'undefined'
 2: alert(typeof(null));//顯示 'object'
 3: alert(typeof(""));//顯示 'string'
 4: alert(typeof(0));//顯示 'number'
 5: alert(typeof(false));//顯示 'boolean'
 6: 
 7: var a7 = NaN;
 8: var a8 = undefined; 
 9: 
 10: alert(typeof a7); //顯示"number"
 11: alert(typeof a8); //顯示"undefined"
以上說明NaN是一種特殊的number,和null、undefined都不會相等。 

函數參數沒有和為空白的判斷

先看看下面的例子:

 1: Test = function(a)
 2: {
 3: alert(typeof a); 
 4: } 
 5:  
 6: Test(); //沒傳參數,運行結果為"underfined"
 7: Test(null); //傳了空參數,運行結果為"object", 如果要使用a.length等,就會報錯,因為對象為空白!

正確的參數檢查是:

 1: Test = function(v)
 2: {
 3: if (v !== null && typeof v != 'undefined') 
 4: {
 5: //使用v的屬性,例如v.length, v.property
 6: // if (v.offsetX != undefined) 
 7: // if ( value == undefined )
 8: }
 9: }

當然,也可以用 if(v) 來簡化編碼,可以檢查v沒給定和v為null的情況,但要注意,如果傳入一個boolean的true或false,用if(v)就意味著 if( v == true),代碼邏輯可能不是你想要的結果!

  • ExtJS+ASP.NET實現真實的進度條顯示伺服器端長時間操作的進度
  • ExtJS+ASP.NET實現非同步Tree的節點搜尋和尋找下一個(FindNext)
  • ExtJS+ASP.NET實現Tree節點的拖動(DragDrop)
  • ExtJS+ASP.NET實現Grid到Tree的拖動(DragDrop)
  • 使用YUI Compressor和DOS批處理指令碼壓縮JavaScript和CSS
  • 最佳化JavaScript
  • 區分JavaScript中的underfined,null和NaN
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.