摘要:數值轉換有個函數可以把非數值轉換為數值和轉型函數可以用于任何數據類型,后面兩個是專門用于把字符串轉換為數值。類型類型用于表示由零或多個位字符組成的字符序列,即字符串。
2.4 數據類型
ECMAScript中有5種簡單數據類型(基本數據類型):Undefined、Null、Boolean、Number和String。還有1種復雜數據類型--Object,Object本質上是由一組無序的名值對組成的。
2.4.1 typeof操作符
typeof操作符用來檢測給定變量的數據類型,可能的返回值:
"undefined" 這個值未定義
"boolean" 這個值是布爾值
"string" 這個值是字符串
"number" 這個值是數值
"object" 這個值是對象或null
"function" 這個值是函數
例子:
var name = "tg"; console.log(typeof name); // "string" console.log(typeof (name)); // "string" console.log(typeof {}); // "object"
typeof是一個操作符,后面的圓括號可有可無。
2.4.2 Undefined類型
Undefined類型只有一個值,即特殊的undefined。
如果在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined。
var name; console.log(name == undefined); // true
對于未聲明過的變量,只能執行一項操作,即使用typeof操作符檢測其數據類型(對未聲明的變量調用delete不會導致錯誤(在非嚴格模式下))
2.4.3 Null類型
Null類型也是只有一個值的數據類型,這個特殊值就是null。null值可以看作是一個空對象指針。
console.log(typeof null); // "object"
undefined其實是派生自null值:
console.log(null == undefined); // true2.4.4 Boolean類型
Boolean類型有兩個字面值:true和false,兩個值是區分大小寫的。
要將一個值轉換為其對應的Boolean值,可使用轉型函數Boolean():
var name = "tg"; console.log(Boolean(name); // true
可以對任何類型的值調用Boolean函數,而且總會返回一個Boolean值(true或false)
轉換規則:
對于true或false,返回原值(true或false)
對于String類型的值,任何非空字符串返回true,空字符串("")返回false
對于Number類型的值,任何非零數字值(包括無窮大),返回true;0和NaN返回false
對于Object類型的值,任何對象返回true,null返回false
對于Undefined類型,undefined返回false(只有一個值)
2.4.5 Number類型
最基本的數值字面量格式是十進制整數。
var num = 15;
八進制(以8為基數) 以0開頭,后面是(0~7)
var num = 070; // 八進制的56
十六進制(以16為基數) 以0x開頭,后面是(0~9及A~F),字母A~F可以大小寫。
var num = 0xA; //十六進制的10
注意:在進行算術計算時,所有以八進制和十六進制表示的數值都會被轉換成是十進制。
1.浮點數值
浮點數值指包含一個小數點,并且小數點后面必須至少有一個數字。
var floatNum = 1.1;
保存浮點數值需要的內存空間是保存整數值的兩倍。
對于那些極大或極小的數值,我們可以使用科學計數法(e表示法)來表示浮點數值。
e表示法表示的數值等于e前面的數值乘以10的指數次冪:
var floatNum = 3.125e7; // 31250000 var floatNum1 = 3e-7; //0.0000003
默認情況下,ECMAScript會將那些小數點后面帶有6個零以上的浮點數值轉換為以e表示的數值。
var floatNum1 = 3e-7; //0.0000003
浮點數的最高精度是17位小數。
0.1 + 0.2 = 0.3000000000000004; // 不是等于0.3
2.數值范圍
基于內存的限制,ECMAScript只能保存有限的數值。
ECMAScript能夠表示的最小數值保存在Number.MIN_VALUE(最小值)中,這個值是5e-324;能夠表示的最大數值保存在Number.MAX_VALUE(最大值)中,這個值是1.7976931348623157e+308.
如果某次計算的結果得到了一個超出JavaScript數值范圍的值,那么這個數值就會被轉換成特殊的Infinity值;如果這個值是負數,則會被轉換為-Infinity(負無窮),如果這個數值是整數,則會轉換成Infinity(正無窮)。
注意:Infinity是不能參與計算的數值。
用isFinite()來判斷這個值是否無窮,該函數接受一個參數。如果參數位于最小與最大數值之間,返回true。
console.log(isFinite(1)); //true console.log(isFinite(Infinity)); // false
3.NaN
NaN(Not a Number)表示非數值,這個數值用于表示一個本來要返回數值的操作數未返回數值的情況。
注意點:
任何涉及NaN的操作都會返回NaN。
NaN與任何值都不相等,包括NaN本身。
console.log(NaN == NaN); //false
我們可以用isNaN()函數來判斷是否非數值,該函數接受一個參數,可以是任何類型。
console.log(isNaN(NaN)); // true
isNaN()在接收到一個值(可以是任何類型)之后,會嘗試將這個值轉換為數值,某些不是數值的值會直接轉換為數值,比如:字符串"10"或Boolean值。而任何不能被轉換為數值的值都會導致這個函數返回true。
console.log(isNaN(NaN)); // true console.log(isNaN(10)); // false console.log(isNaN("blue")); // true
4.數值轉換
有3個函數可以把非數值轉換為數值:Number()、parseInt()和parseFloat()
轉型函數Number()可以用于任何數據類型,后面兩個是專門用于把字符串轉換為數值。
Number()函數的轉換規則:
如果是Boolean值,true和false將分別轉換為1和0
如果是數字值,只是簡單的傳入和返回
如果是null值,返回0
如果是undefined,返回NaN
如果是字符串中只包含數字(包括前面帶正負號),則將其轉換為十進制數值(前導的零會被忽略)
如果字符串中包含有效的浮點格式,如1.1,則將其轉換為對應的浮點數值
如果字符串中包含有效的十六進制,如0xf,則將其轉換為相同大小的十進制數值
如果字符串是空的,返回0
如果字符串中包含上述格式以外的字符,返回NaN
如果是對象,則調用對象的valueOf()方法,然后依照前面的規則轉換返回的值。如果轉換的結果是NaN,則調用對象的toString()方法,然后再次依照前面的規則轉換返回字符串值
console.log(Number("tg")); // NaN console.log(Number("")); // 0 console.log(Number("0011")); // 11 console.log(Number(true)); //1
一元加操作符的操作與Number函數規則相同。
parseInt()
parseInt()會忽略字符串前面的空格,直到找到第一個非空格字符。如果第一個字符不是數字字符或負號,就會返回NaN。如果第一個字符是數字字符,就會繼續解析,直到解析完所有后續字符或者遇到了一個非數字字符。
parseInt()也能識別八進制(在ECMAScript 5中無法識別,將開頭的0當作0)和十六進制,最后會轉換成十進制。
console.log(parseInt("123tg")); // 123 console.log(parseInt("")); // NaN console.log(parseInt("070")); // 70 console.log(parseInt("0xf")); //15 console.log(parseInt(22.5)); // 22
我們還可以為parseInt()提供第二個參數,指定需要轉換的進制。
console.log(parseInt("0xAF",16)); // 175 console.log(parseInt("AF",16)); // 175 console.log(parseInt("AF")); // NaN console.log(parseInt("070",8)); // 56 console.log(parseInt("70",8)); // 56
如果提供了第二個參數,要轉換八進制和十六進制時,可省略0和0x。
parseFloat()和parseInt()類似,也是從第一個字符(位置0)開始解析每個字符,而且一直解析到字符串末尾,或者解析到遇到一個無效的浮點數字字符為止,換句話說,字符串中的第一個小數點是有效的,后面的小數點是無效的,它還會忽略前導的零,只會解析十進制值。
console.log(parseFloat("123tg")); // 123 console.log(parseFloat("22.12.4")); // 22.12 console.log(parseFloat("070")); // 70 console.log(parseFloat("0xf")); //0 console.log(parseFloat(22.5)); // 22.5
2.4.6 String類型
String類型用于表示由零或多個16位Unicode字符組成的字符序列,即字符串。字符串可以由雙引號或單引號表示。
var name = "tg";
用雙引號表示的字符串和用單引號表示的字符串完全相同,但要確保引號前后一致,也就是說以雙引號開頭的必須以雙引號結尾,以單引號開頭的必須以單引號結尾。
1.字符字面量
String數據類型包含了一些特殊的字符字面量,也叫轉義序列。
換號 制表 空格 回車 f 進紙 斜杠 " 單引號 " 雙引號 xnn 以十六進制代碼nn表示的一個字符(n為0~F),比如:x41表示"A" unnn 以十六進制代碼nnnn表示的一個Unicode字符(n為0~F)。比如:u03a3表示Σ
這些字符字面量可以出現在字符串中的任意位置,會被當做一個字符來解析。
var name = "tgu03a3"; console.log(name); //tgΣ console.log(name.length); // 3
任何字符串的長度都可以訪問其length屬性取得。
2.字符串的特點
ECMAScript中的字符串是不可變的。一旦創建,值就不會改變。
后臺邏輯:要改變某個變量保存的字符串,首先要銷毀原來的字符串,然后用另一個包含新值的字符串填充該變量。
3.轉換為字符串
要將一個值轉換為字符串有兩種方式:
使用每個值(null和undefined除外)都有的toString()方法
var age = 1; console.log(age.toString()); // "1"
我們還可以給toString()傳入一個參數,輸出數值的基數。
var num = 10; console.log(num.toString()); // "10" console.log(num.toString(2)); // 1010 console.log(num.toString(8)); // 12
可以使用轉型函數String(),能將任何類型的值轉換為字符串,轉換規則:
如果值有toString()方法,則調用該方法并返回相應的結果
如果值是null,則返回null
如果值是undefined,則返回undefined
console.log(String(10)); // "10" console.log(String(true)); // "true" console.log(String(null)); // "null" console.log(String(undefined)); // "undefined"
要把某個值轉為字符串,還可以使用加號操作符:
console.log( true + ""); // "true"
2.4.7 Object類型
ECMAScript中的對象其實就是一組數據和功能的集合。
對象可通過執行new操作符后跟創建的對象類型的名稱來創建。
var o = new Object();
如果不傳參,可以省略后面的圓括號(不推薦)。
var o = new Object;
在ECMAScript中,Object類型是所有對象的基礎。
Object的每個實例都具有下列屬性和方法:
Constructor:保存著用于創建當前對象的函數,比如上面的例子,構造函數就是Object()
hasOwnProperty(propertyName):用于檢查給定的屬性在當前對象實例中是否存在(而不是在實例的原型中),參數必須是字符串形式
isPrototypeOf(object):用于檢查傳入的對象是否是另一個對象的原型
propertyIsEnumerable(propertyName):用于檢查給定的屬性是否能夠使用for-in語句來枚舉,參數必須是字符串形式
toLocaleString():返回對象的字符串表示,該字符串與執行環境的地區對應
toString():返回對象的字符串表
valueOf():返回對象的字符串、數值或布爾值表示,通常和toString()返回的值相同
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81980.html
摘要:被識別為結束符。變量時被認為時有名字的容器。常量一旦被聲明初始化,值并不能被改變。字符串可以看成右字符組成的數組,可能被誤認為可變的。表達式沒有顯示的返回任何內容。 Java script 簡介 Javascript 是一門跨平臺,面向對象的輕量級腳本語言,運行于Javascript解釋權/引擎 avascript內置了一個包含一系列對象的標準庫,比如數組,日期,數字和一個語言元素合...
摘要:以和為例,說明中的數字數據如何轉換為二進制數據。對象用來表示通用的固定長度的原始二進制數據緩沖區。中的數字數據如何轉換為二進制數據對和有了一個大概的了解,下面讓我們來看下它是如何進行二進制數據操作的。 概述 本文主要通過對JavaScript中數字數據與二進制數據之間的轉換,讓讀者能夠了解在JavaScript中如何對數字類型(包括但不限于Number類型)進行處理。 二進制數據在日常...
摘要:變量與常量變量定義變量是存儲數據信息的容器。中,變量是弱類型,也被稱為松散類型。三類型布爾類型只有兩個值均為小寫如果大寫活著大小寫混合,識別為另一個變量名稱。 JavaScript簡介 JavaScript是一門跨平臺、面向對象的輕量級腳本語言,運行于JavaScript解釋器或者引擎中。JavaScript中,包括三個主要的部分1.核心語法內容(ECMAScript)2.文檔對象模型...
摘要:解釋一行,執行一行這也意味著你可以使用同一個變量保存不同類型的數據二數據類型最新的標準定義了種數據類型種原型數據類型布爾值,和一個表明值的特殊關鍵字。我們稱這些類型的值為原始值四布爾值布爾值數據類型只能有兩個值,它們是文本和。 一、動態類型 JavaScript 是一種弱類型或者說動態語言。這意味著你不用提前聲明變量的類型,在程序運行過程中,類型會被自動確定。(解釋一行,執行一行)這也...
摘要:通常一個完成的不僅僅包含了還包括了以及相關版本該版本在中使用。基于原型函數先行的語言使用基于原型的的繼承機制,函數是的第一等公民其他相關的語言特性編譯型語言把做好的源程序全部編譯成二進制代碼的可運行程序。 轉載請注明出處,創作不易,更多文章請戳 https://github.com/ZhengMaste... 前言:JavaScript誕生于1995年,它是一門腳本語言,起初的目...
摘要:字符串類型的字符串類型用于表示文本數據。例如,使用一個分隔符,一個可以模仿一個列表一個的數組可能更適合一些。不幸的是,當一個分隔符在用于列表中的元素時,打亂了這個列表。屬性的值可以是任意類型,包括具有復雜數據結構的對象。 編程語言都具有內建的數據結構,但各種編程語言的數據結構常有不同之處。本文試圖列出 JavaScript 語言中內建的數據結構及其屬性,它們可以用來構建其他的數據結構;...
閱讀 3143·2021-11-23 10:02
閱讀 3118·2021-11-16 11:53
閱讀 3094·2021-09-23 11:21
閱讀 3369·2019-08-30 13:02
閱讀 1622·2019-08-29 16:18
閱讀 1557·2019-08-29 12:55
閱讀 1458·2019-08-26 12:24
閱讀 2085·2019-08-26 10:36