首頁 web前端 js教程 JavaScript資料型別學習筆記_javascript技巧

JavaScript資料型別學習筆記_javascript技巧

May 16, 2016 pm 03:18 PM
javascript 資料類型

ECMAscript 中有5種簡單的資料類型,也稱為基本資料類型:Undefined、Null、Boolean、Number和String。還有一種複雜的資料類型—Object。

Undefined 類型

在使用var 宣告變數但未對其進行初始化時,這個變數的值就是undefined。如:

var number;
document.write(number); //undefined
登入後複製

如果沒有宣告變數就會出現下面這種錯誤。如:

document.write(str); //错误
登入後複製

但是用typeof對其進行執行時,不管有沒有宣告都會傳回undefined 值。如:

var num;
document.write(typeof num); //undefined
document.write(typeof str); //undefined
登入後複製

Null 類型

使用typeof偵測null 時會回傳"object"。如:

var num = null;
document.write(typeof num); //object
登入後複製

實際上undefined 值是衍生自null 值的,因此他們相等都會回傳true。如:

alert(null == undefined); //true
登入後複製

這裡要注意的是,只要意在保存對象的變數還沒有真正保存對象,就應該明確地讓該變數保存null 值,此舉有助於區分null 和 undefined。如:

var num1 = null;
var num2;
document.write(typeof num1 + " " + typeof num2); //object undefined
登入後複製

Boolean 型

要將一個值轉換為其對應的Boolean 值,可以使用轉型函數Boolean()。如:

var str = "helloworld";
document.write(Boolean(str)); //true
登入後複製

《JavaScript高級程式設計》一書中的3.4.4中給出了關於各種資料類型及其對應的轉換規則表格。大概有以下幾種:

  • 當資料型別為String 時,任何非空字串都會轉換為true;
  • 當資料型別為Number 時,除了0 和NaN 會轉換為false 之外,其他都會轉換為true;
  • 當資料型別為Object 時,除了null 之外,都會轉換為true;
  • 當資料型別為Undefined 時,n/a 會轉換為true,undefined 會轉換成false;

這裡要注意的是,if 語句經常使用自動執行回應的Boolean 轉換作為條件。如:

var str = "helloworld";
if (str){
  document.write("hellothere");
} //hellothere
登入後複製

Number 類型

除了可以以十進位表示之外,整數還可以透過八進位或十六進位的字面值來表示,其中八進位字面值的第一位必須是0,然後是八進位數字序列(0~7)。如:

var num1 = 070; //八进制的56
var num2 = 032; //八进制的32
var num3 = 079; //错误的八进制(>7)
var num4 = 09; //错误的八进制(>7)
登入後複製

十六進位字面值的前兩位必須是0x,後面跟任何十六進位數(0~9 及 A~F)。如:

var num1 = 0xA; //十六进制的10
var num1 = 0xa; //也是十六进制的10(字母不区分大小写)
登入後複製

浮點數值

這裡要注意的是,永遠不要比較特定的浮點數值。如:

var a = 0.1;
var b = 0.2;
if (a + b == 0.3){
  document.write("you are right")
} //因为0.1 加上0.2 实际上等于0.30000000000000004
登入後複製

數值範圍

ECMAScript 能夠表示的最大和最小數值保存在Number.MAX_VALUE 和Number.MIN_VALUE 之中。要確定一個數值是不是有窮的,可以使用isFinite()函數。如:

document.write(isFinite(Number.MAX_VALUE + Number.MAX_VALUE)); //false
登入後複製

NaN

0 除以0 會回傳NaN,正數除以0 會回傳Infinity,複數則會回傳-Infinity。其次,NaN 與任何數值都不相等,包括它本身。另外函數isNaN()可以幫助我們確定這個參數是否「不是數值」。如:

document.write(isNaN("a")); //true;
document.write(isNaN("324")); //false;
document.write(isNaN(true)); //false;
document.write(isNaN(false)); //false;
document.write(isNaN(NaN)); //true;
登入後複製

數值轉換

有三個函數可以把非數值轉換成數值:Number()、parseInt()、parseFloat()。

Number()的轉換法則如下:

如果是Boolean 值,true 和false 會轉換為1 和0。
如果是數字值,則不變。
如果是null 值,則轉換為0。
如果是undefined,返回NaN。
如果是字串則遵循下列規則:

  • 如果只有數字,則轉換為十進位數數值。
  • 如果是浮點格式,則將其轉換成對應的浮點數值。同樣也會忽略前導零。
  • 如果是十六進位格式則會轉換成十進位數。
  • 如果字串是空的,則會轉換成0。
  • 其他情況則會轉換為NaN。

具體看下面的範例:

document.write(Number(true)); //1
document.write(Number(false)); //0
document.write(Number("789")); //789
document.write(Number(null)); //0
document.write(Number(undefined)); //NaN
document.write(Number("02.0942")); //2.0942
document.write(Number(0xa)); //10
document.write(Number("")); //0
document.write(Number("fdsa")); //NaN
登入後複製

parseInt()的转换规则如下:

  • 如果第一个字符不是数字字符或者符号,parseInt()会返回NaN。
  • 用parseInt()转换空字符串会返回NaN。
  • 如果第一个字符是数字字符,它会继续解析第二个字符,直到遇到了一个非数字字符.

下面是具体的例子:

document.write(parseInt("fds")); //NaN
document.write(parseInt("")); //NaN
document.write(parseInt("1111112abc")); //1111112
document.write(parseInt("-1111112abc")); //-1111112
document.write(parseInt("+1111112abc")); //-1111112
document.write(parseInt("0xa")); //10
document.write(parseInt("0022.00009")); //22
document.write(parseInt("070")); //ECMAScript 3认为是56(八进制), ECMAScript 5认为是70(十进制)
登入後複製

另外需要注意的是,ECMAScript 5已经不具备解析八进制值的能力了所以为了消除这个问题,可以为这个函数提供第二个参数:转换时使用的基数(多少进制),具体如下:

document.write(parseInt("070",10)); //70
document.write(parseInt("070",8)); //56
document.write(parseInt("070",16)); //112
登入後複製

多数情况下,最好默认设置成10进制。

parseFloat()的转换规则如下:

  • 与parseInt()类似,不同的是字符串第一个小数点是有效的,而从第二个小数点开始包括第二个小数点是无效的。
  • 他不能解析十六进制数值!!!
  • 他只能解析十进制数值!!!
  • 他没有用第二个基数来指定进制的用法。

下面是具体的例子:

document.write(parseFloat("421")); //421
document.write(parseFloat("0421.32.1")); //421.32
document.write(parseFloat("0xaafd")); //0
document.write(parseFloat("070")); //70
document.write(parseFloat("070abc")); //70
document.write(parseFloat("")); //NaN
document.write(parseFloat("abc")); //NaN
登入後複製

String 类型

要把一个值转换成字符串有两种方式。第一种是使用几乎每个值都有的toString()方法。如下:

document.write((533).toString(10)); //"533"
document.write((0xa).toString(10)); //"10"
document.write((0xa).toString(2)); //"1010"
document.write((true).toString(10)); //"true"
document.write((false).toString(10)); //"false"
登入後複製

另外需要注意的是,null 和 undefined 不能转换。

document.write((null).toString(10)); //
document.write((undefined).toString(10)); //
登入後複製

如果不知道需要转换的数值是否是null 或者undefined 则应该使用转型函数String(),如果是null 会返回"null"如果是undefined 会返回"undefined"。如下:

document.write(String(null)); //"null"
document.write(String(undefined)); //"undefined"
登入後複製

另外在下一篇文章中再详细介绍Object 类型。

以上就是关于JavaScript数据类型的简单介绍,希望对大家学习JavaScript数据类型有所帮助。

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MySQL資料庫中性別欄位應該使用什麼資料類型? MySQL資料庫中性別欄位應該使用什麼資料類型? Mar 14, 2024 pm 01:21 PM

在MySQL資料庫中,性別欄位通常可以使用ENUM類型來儲存。 ENUM是一種枚舉類型,它允許我們在一組預先定義的值中選擇一個作為欄位的值。在表示性別這樣一個固定且有限的選項時,ENUM是一個很好的選擇。讓我們來看一個具體的程式碼範例:假設我們有一個名為"users"的表,其中包含了使用者的信息,包括性別。現在我們要為性別創建一個字段,我們可以這樣設計表結構:CRE

MySQL中最適合用於性別欄位的資料類型是什麼? MySQL中最適合用於性別欄位的資料類型是什麼? Mar 15, 2024 am 10:24 AM

在MySQL中,最適合用於性別欄位的資料類型是ENUM枚舉類型。 ENUM枚舉類型是一種允許定義一組可能取值的資料類型,性別欄位適合使用ENUM類型是因為性別通常只有兩個取值,即男性和女性。接下來,我將透過具體的程式碼範例來展示如何在MySQL中建立一個性別欄位並使用ENUM枚舉類型儲存性別資訊。以下是操作步驟:首先,在MySQL中建立一個名為users的表格,包括

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

Python 語法的心智圖:深入理解程式碼結構 Python 語法的心智圖:深入理解程式碼結構 Feb 21, 2024 am 09:00 AM

python憑藉其簡單易讀的語法,廣泛應用於廣泛的領域。掌握Python語法的基礎架構至關重要,既可以提高程式效率,又能深入理解程式碼的運作方式。為此,本文提供了一個全面的心智圖,詳細闡述了Python語法的各個面向。變數和資料類型變數是Python中用於儲存資料的容器。心智圖展示了常見的Python資料類型,包括整數、浮點數、字串、布林值和列表。每個資料類型都有其自身的特性和操作方法。運算符運算符用於對資料類型執行各種操作。心智圖涵蓋了Python中的不同運算子類型,例如算術運算子、比

MySQL中性別欄位最佳資料類型選擇是什麼? MySQL中性別欄位最佳資料類型選擇是什麼? Mar 14, 2024 pm 01:24 PM

在設計資料庫表時,選擇合適的資料類型對於效能最佳化和資料儲存效率非常重要。在MySQL資料庫中,儲存性別欄位的資料類型真是沒有所謂的最佳選擇,因為性別欄位一般只有兩個取值:男或女。但是為了效率和節省空間,我們可以選擇合適的資料類型來儲存性別欄位。在MySQL中,儲存性別欄位最常用的資料類型是枚舉類型。枚舉類型是一種能夠把欄位的值限定在一個有限的集合內的資料型別

MySQL中布林類型的使用方法詳解 MySQL中布林類型的使用方法詳解 Mar 15, 2024 am 11:45 AM

MySQL中布林類型的使用方法詳解MySQL是一種常用的關聯式資料庫管理系統,在實際應用中經常需要使用布林類型來表示邏輯上的真假值。 MySQL中布林類型有兩種表示法:TINYINT(1)和BOOL。本文將詳細介紹MySQL中布林類型的使用方法,包括布林類型的定義、賦值、查詢和修改等操作,同時結合具體的程式碼範例進行說明。 1.布林類型的定義在MySQL中,可

C語言的基本語法和資料類型介紹 C語言的基本語法和資料類型介紹 Mar 18, 2024 pm 04:03 PM

C語言是一種廣泛使用的電腦程式語言,具有高效、靈活和強大的特點。要熟練使用C語言進行編程,首先需要了解其基本語法和資料類型。本文將介紹C語言的基本語法和資料類型,並舉例說明。一、基本語法1.1註解在C語言中,可以使用註解來對程式碼進行說明,以便於理解和維護。註解可以分為單行註解和多行註解。 //這是單行註解/*這是多行註解*/1.2關鍵字C語

Python 入門到精通:從零基礎到專案開發 Python 入門到精通:從零基礎到專案開發 Feb 20, 2024 am 11:42 AM

1.Python簡介python是一種簡單易學、功能強大的通用程式語言,由GuidovanRossum於1991年創建。 Python的設計理念是強調程式碼的可讀性,並為開發人員提供豐富的程式庫和工具,以幫助他們快速、有效率地建立各種應用程式。 2.Python基礎語法Python的基礎語法與其他程式語言類似,包括變數、資料型別、運算子、控制流程語句等。變數用於儲存數據,資料類型定義了變數可以儲存的資料類型,運算子用於對資料進行各種操作,控制流程語句用於控製程式的執行流程。 3.Python資料類型Python中

See all articles