首頁 >web前端 >前端問答 >javascript基本資料型別包括什麼

javascript基本資料型別包括什麼

藏色散人
藏色散人原創
2021-09-01 14:29:2012604瀏覽

javascript有5種基本資料類型,分別是:1、Undefined型別;2、Null型別;3、Boolean型別;4、Number型別;5、String型別。

javascript基本資料型別包括什麼

本文操作環境:windows7系統、javascript1.8.5版,DELL G3電腦。

js的基本資料型別有哪些?

ECMAScript中有5中簡單資料型別(也稱為基本資料型別): UndefinedNullBooleanNumberString。還有1中複雜的資料型態——ObjectObject#本質上是由一組無序的名值對組成的。

其中UndefinedNullBooleanNumber都屬於基本型別。 ObjectArrayFunction則屬於引用類型,String有些特殊,具體的會在下面展開分析。

變數

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

這就是ECMAScript是鬆散類型的來由,所謂鬆散類型就是可以用來保存任何類型的資料。

ps:
es6中新增了let指令來宣告變數、const指令聲明一個只讀的常數。

let的用法類似於var,但是所聲明的變量,只在let命令所在的程式碼塊內有效。

const一旦聲明,常數的值就不能改變。

關於letconst這裡不做展開討論。

typeof 運算子

由於js中的變數是鬆散類型的,所以它提供了一種檢測目前變數的資料類型的方法,也就是typeof關鍵字.
透過typeof關鍵字,對這5種資料型別會傳回下面的值(以字串形式顯示)
undefined    --- -------   若數值未定義                      Undefined

boolean      ---------- 1 Boolean

string        ----------     若這個值是字串            String

##number      ----------     如果這個值是數值型別          Number

#object       -------- 如果--   這個值是物件或null Object

要注意的是typeof null傳回為object,因為特殊值null

被認為是一個空的物件參考。

Undefined

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。 ###

Boolean

该类型只有两个字面值:true和false。这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0。

虽然Boolean类型的字面值只有两个,但JavaScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用类型转换函数Boolean(),例如:

    var message = 'Hello World';
    var messageAsBoolean = Boolean(message);

在这个例子中,字符串message被转换成了一个Boolean值,该值被保存在messageAsBoolean变量中。可以对任何数据类型的值调用Boolean()函数,而且总会返回一个Boolean值。至于返回的这个值是true还是false,取决于要转换值的数据类型及其实际值。下表给出了各种数据类型及其对象的转换规则。

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空的字符串 ""(空字符串)
Number 任何非0数值(包括无穷大) 0和NAN
Object 任何对象 null
Undefined 不适用 undefined
    var message = 'Hello World';
    if(message)
    {
        alert("Value is true");
    }

运行这个示例,就会显示一个警告框,因为字符串message被自动转换成了对应的Boolean值(true)。由于存在这种自动执行的Boolean转换,因此确切地知道在流控制语句中使用的是什么变量至关重要。

ps:使用!!操作符转换布尔值
!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false;

对null与undefined等其他用隐式转换的值,用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于将这些值转换为“等价”的布尔值;

var foo;  
alert(!foo);//undifined情况下,一个感叹号返回的是true;  
alert(!goo);//null情况下,一个感叹号返回的也是true;  
var o={flag:true};  
var test=!!o.flag;//等效于var test=o.flag||false;  
alert(test);

这段例子,演示了在undifined和null时,用一个感叹号返回的都是true,用两个感叹号返回的就是false,所以两个感叹号的作用就在于,如果明确设置了变量的值(非null/undifined/0/”“等值),结果就会根据变量的实际值来返回,如果没有设置,结果就会返回false。

【推荐学习:javascript基础教程

Number

这种类型用来表示整数和浮点数值,还有一种特殊的数值,即NaN(非数值 Not a Number)。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在JavaScript中,任何数值除以0会返回NaN,因此不会影响其他代码的执行。

NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身。例如,下面的代码会返回false。

alert(NaN == NaN);    //false

String

String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由单引号(')或双引号(")表示。

String类型的特殊性

string类型有些特殊,因为字符串具有可变的大小,所以显然它不能被直接存储在具有固定大小的变量中。由于效率的原因,我们希望JS只复制对字符串的引用,而不是字符串的内容。但是另一方面,字符串在许多方面都和基本类型的表现相似,而字符串是不可变的这一事实(即没法改变一个字符串值的内容),因此可以将字符串看成行为与基本类型相似的不可变引用类型

Boolean、Number、String 这三个是Javascript中的基本包装类型,也就是这三个其实是一个构造函数,他们是Function的实例,是引用类型,至于这里的String与以上说的String是同名,是因为其实上文说的String是指字符串,这里的String指的是String这个构造函数,上面那么写,是为了更好的理解,因为Javascript是松散类型的。我们可以看下String实例化的例子:

var name = String("jwy");
alert(typeof name);//"string"
var x=new String('12345')
typeof x //object
x='12345'
typeof x //string
var author = "Tom";
alert(typeof name);//"string"

至于author这个会有length,substring等等这些方法,其实string只是String的一个实例,类似于C#中的String,和string.

注意,typeof 变量  如果值是"string" 的话,也就是这个变量是字符串,在Javascript中,字符串是基本类型,而在C#或Java中,字符串是引用类型,但是Javascript中的String是引用类型,因为它是Javascript中定义好的基本包装类型,在C#中,String跟string其实是一样的。

本帖只是简要的copy了一些JavaScript高级程序设计(第三版)内容,外加了自己侧重的角度,看本帖的朋友还是要看书啊,这里只是做个参考。

以上是javascript基本資料型別包括什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn