關於Js(五)------ js的基本類型有哪些?引用類型有哪些?null和undefined的區別。


 基本類型:Number,String,Boolean,Null,undefined。

 引用類型:Object,Array,Date,RegExp,Function

Object本質上是由一組無序的名值對組成的。

 

ECMAScript中用var關鍵字來定義變量,因為js是弱類型的,所以無法確定變量一定會存儲什么值,也就不知道變量到底會是什么類型,而且變量的類型可以隨時改變。

這就是ECMAScript是松散類型的來由,所謂松散類型就是可以用來保存任何類型的數據。

es6中新增了let命令來聲明變量、const命令聲明一個只讀的常量。let的用法類似於var,但是所聲明的變量,只在let命令所在的代碼塊內有效。const一旦聲明,常量的值就不能改變。

typeof 操作符

由於js中的變量是松散類型的,所以它提供了一種檢測當前變量的數據類型的方法,也就是typeof關鍵字.
通過typeof關鍵字,對這5種數據類型會返回下面的值(以字符串形式顯示)
undefined ---------- 如果值未定義 Undefined

boolean ---------- 如果這個值是布爾值 Boolean

string ---------- 如果這個值是字符串 String

number ---------- 如果這個值是數值類型 Number

object ---------- 如果這個值是對象或null Object

需要注意的是typeof null返回為object,因為特殊值null被認為是一個空的對象引用。

 

  1. alert( typeof null); // "object"
  2.  
    alert( typeof function () {
  3.  
    return 1;
  4.  
    }); // "function"
  5.  
    alert( typeof '夢龍小站'); // "string"
  6.  
    alert( typeof 1); // "number"
  7.  
    alert( typeof a); // "undefined"
  8.  
    alert( typeof undefined); // "undefined"
  9.  
    alert( typeof []); // "object"

Undefined

 

 null是一個表示"無"的對象,轉為數值時為0;undefined是一個表示"無"的原始值,轉為數值時為NaN。

 

Undefined類型只有一個值,即特殊的undefined在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined。不過,一般建議盡量給變量初始化,但是在早期的js版本中是沒有規定undefined這個值的,所以在有些框架中為了兼容舊版瀏覽器,會給window對象添加undefined值。

 

window['undefined'] = window['undefined']; //或者 window.undefined = window.undefined; 

Null

Null類型是第二個只有一個值的數據類型,這個特殊的值是null從邏輯角度來看,null值表示一個空對象指針,而這也正是使用typeof操作符檢測null時會返回object的原因。

  var car = null; console.log(typeof car); // "object"

如果定義的變量准備在將來用於保存對象,那么最好將該變量初始化為null而不是其他值。這樣一來,只要直接檢測null值就可以知道相應的變量是否已經保存了一個對象的引用了。
例如:

  if(car != null){ //對car對象執行某些操作 }

實際上,undefined值是派生自null值的,因此ECMA-262規定對它們的相等性測試要返回true。

console.log(undefined == null); //true

盡管null和undefined有這樣的關系,但它們的用途完全不同。無論在什么情況下都沒有必要把一個變量的值顯式地設置為undefined,可是同樣的規則對null卻不適用。換句話說,只要意在保存對象的變量還沒有真正保存對象,就應該明確地讓該變量保存null值。這樣做不僅可以體現null作為空對象指針的慣例,而且也有助於進一步區分null和undefined。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM