亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

typeof使用以及null和undefined的判斷區(qū)分

netScorpion / 1033人閱讀

摘要:的使用這是一個運算符,不是方法檢測數(shù)據(jù)類型,返回的結果是一個字符串類型。在檢查相等性時,不能把和轉換成其他值。

1 typeof的使用;這是一個運算符,不是方法

1.1檢測數(shù)據(jù)類型,返回的結果是一個字符串類型。有六種可能:number boolean string object function undefined

注意typeof(null) 返回的是 : object

1.2 typeof 可以用于被聲明 或者未被聲明 的變量;但是未被聲明的變量不能用其他運算符運算,之外的其他運算符的話,會引起錯誤,因為其他運算符只能用于已聲明的變量上。


1.3 對于基本數(shù)據(jù)類型(Number Boolean String null undefined) 以及引用類型 object的typeof值

1.3.1類 : Object Function Array String Boolean Number Date ;這些未初始化為實例的類的typeof類型為function

    function test (){       }
    console.log(Object);//function Object() { [native code] }
    console.log(typeof Object);//function
    console.log(Array);//function Array() { [native code] }
    console.log(typeof Array);//function
    console.log(Function);//function Function() { [native code] }
    console.log(typeof Function);//function
    console.log(String);//function String() { [native code] }
    console.log(typeof String);//function
    console.log(test);//function test(){   }
    console.log(typeof test);//function

1.3.2 對象的創(chuàng)建方式是用關鍵字 new 后面跟上實例化的類的名字,當將一個函數(shù)通過new實例化之后,那么就創(chuàng)建了一個對象

    function test (){       }  
    var obj = new test();
    console.log(obj.constructor);//function test(){}
    console.log(obj);//test{}
    console.log(typeof obj);//Object

    var obj1 = new Array();
    console.log(obj1.constructor);//function Array() { [native code] }
    console.log(obj1);//[]
    console.log(typeof obj1);//Object

    var obj2 = new Function();
    console.log(obj2.constructor);//function Function() { [native code] }
    console.log(obj2);//function anonymous() {}
    console.log(typeof obj2);//function

    var obj3 = new String();
    console.log(obj3.constructor);//function String() { [native code] }
    console.log(obj3);//String {length: 0, [[PrimitiveValue]]: ""}
    console.log(typeof obj3);//object

    var obj4 = new Object();
    console.log(obj4.constructor);//function Object() { [native code] }
    console.log(obj4);//Object {}
    console.log(typeof obj4);//object

1.3.3 基本數(shù)據(jù)類型的typeof的值


2 null undefined

2.1 null是一個表示"無"的對象,轉化為數(shù)值的時候值為0;典型的用法是:

用來初始化一個變量,該變量將來可能會被賦值成一個對象

用來和一個已經(jīng)初始化的對象進行比較,這個變量可以是一個對象,也可以不是一個對象

當函數(shù)的參數(shù)期望是對象時,被用作參數(shù)傳入

當函數(shù)返回值期望是對象時,被當做返回值輸出

刪除事件綁定,事件本身是一個 null ,是一個空的對象,可以添加

作為對象原型鏈的終點




    
    






2.2 undefined 是一個表示"無"的原始值,轉化為數(shù)值的時候值為NaN ;典型用法是:

變量被聲明了,但是沒有賦值,那么該變量的值就是undefined

調用一個函數(shù)的時候,如果應該提供的參數(shù)沒有提供,那么該參數(shù)默認是undefined

如果一個對象的屬性沒有賦值,那么該屬性值為undefined

函數(shù)沒有返回值的時候,默認返回undefined;

2.3 如何區(qū)分二者?

== 運算符只比較值,不進行類型的比較,比較之前會進行隱式轉化,null==undefined 返回true.

=== 區(qū)分兩者,不僅僅比較內容,還比較數(shù)據(jù)類型 null===undefined false

如何判斷一個變量是null還是undefined?

如何確定一個變量是undefined;

var exp = undefined ;//var exp ;如果不進行賦值的話,結果也是undefined
//這種方法是錯誤的,因為null==undefined 返回true;
if(exp == undefined){
  console.log("exp變量是undefined");
}
//這種方法才是正確的,注意undefined加"" ,因為typeof返回的值是一個字符串類型的
if(typeof(exp) == "undefined"){
  console.log("exp變量是undefined");
}

以下附上== 運算符的W3C解釋,方便讀者回憶基礎

執(zhí)行類型轉化遵循的規(guī)則:
如果一個運算數(shù)是 Boolean 值,在檢查相等性之前,把它轉換成數(shù)字值。false 轉換成 0,true 為 1。 
如果一個運算數(shù)是字符串,另一個是數(shù)字,在檢查相等性之前,要嘗試把字符串轉換成數(shù)字。 
如果一個運算數(shù)是對象,另一個是字符串,在檢查相等性之前,要嘗試把對象轉換成字符串。 
如果一個運算數(shù)是對象,另一個是數(shù)字,在檢查相等性之前,要嘗試把對象轉換成數(shù)字。
還遵循以下轉化規(guī)則:
值 null 和 undefined 相等。 
在檢查相等性時,不能把 null 和 undefined 轉換成其他值。 
如果某個運算數(shù)是 NaN,等號將返回 false,非等號將返回 true。 
如果兩個運算數(shù)都是對象,那么比較的是它們的引用值。如果兩個運算數(shù)指向同一對象,那么等號返回 true,否則兩個運算數(shù)不等。

如何確定一個變量是null

var exp = null;
//以下兩種是不正確的
if(!exp){ //0 或者undefined同樣可以進入if語句
console.log("該變量是null");
}
if(exp == null ){ //undefined == null 返回true
console.log("該變量是null")
}
//下面這種才是正確判斷null 類型的
if(typeof(exp) == "object" && exp == null){ //同時進行類型和內容的判斷
console.log("該變量是null");
}

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/81774.html

相關文章

  • typeof instanceof null undefined 區(qū)分

    摘要:的使用這是一個運算符,不是方法檢測數(shù)據(jù)類型,返回的結果是一個字符串類型。在檢查相等性時,不能把和轉換成其他值。 1 typeof的使用;這是一個運算符,不是方法 1.1檢測數(shù)據(jù)類型,返回的結果是一個字符串類型。有六種可能:number boolean string object function undefined 注意typeof(null) 返回的是 : object 1.2 ...

    BigNerdCoding 評論0 收藏0
  • 【基礎】JavaScript類型判斷

    摘要:基本類型類對象純對象類數(shù)組其中部分參考了的函數(shù)實現(xiàn)。比如說所以如果此時對象不是由內置構造函數(shù)生成的對象,這個為。判斷對于類數(shù)組對象,只要該對象中存在屬性并且為非負整數(shù)且在有限范圍之內即可判斷為類數(shù)組對象。 本文主要講解如何準確判斷JavaScript中出現(xiàn)的各種類型和對象。(基本類型、Object類、Window對象、純對象plainObject、類數(shù)組)其中部分參考了jQuery的函...

    YuboonaZhang 評論0 收藏0
  • JavaScript基礎語法 變量 常量 數(shù)據(jù)類型

    摘要:第十六天筆記基礎語法區(qū)分大小寫是一種區(qū)分大小寫的語言的關鍵字變量名函數(shù)名以及任何其他的標識符必須適應一致的大小寫形勢臥龍前端空格和換行并不是的語法內容可有可無建議使用將代碼書寫的更加整潔美觀更有可讀性可選的分號分號可選項語法并不是強制要 第十六天筆記 JavaScript 基礎語法 區(qū)分大小寫 JavaScript是一種區(qū)分大小寫的語言 JavaScript的關鍵字 變量名 函...

    xingpingz 評論0 收藏0
  • 如何判斷JavaScript數(shù)據(jù)類型?

    摘要:本文將講解我目前所知道的判斷數(shù)據(jù)類型的方法。數(shù)據(jù)類型一共有種除了之外的種屬于原始數(shù)據(jù)類型。等價于問題四的返回值是什么答案。 本文將講解我目前所知道的判斷JavaScript數(shù)據(jù)類型的方法。JavaScript數(shù)據(jù)類型一共有7種: Undefined Null Boolean String Symbol Number Object 除了Object之外的6種屬于原始數(shù)據(jù)類型。有時,我...

    jackzou 評論0 收藏0
  • JavaScript基礎系列--數(shù)據(jù)類型及類型判斷

    摘要:中有五種基本數(shù)據(jù)類型,以及一種復雜引用類型數(shù)據(jù)類型,中還細分了很多具體的類型,比如等等中又新增了一種類型。類型的數(shù)值范圍是,超出這個范圍的值為,可以使用函數(shù)來判斷數(shù)值是否在范圍內。 ECMAScript5中有五種基本數(shù)據(jù)類型:Undefined,Null,Boolean,Number,String,以及一種復雜(引用類型)數(shù)據(jù)類型:Object,Object中還細分了很多具體的類型,比...

    duan199226 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<