摘要:數(shù)值轉(zhuǎn)換對個人而言是非常重要的,這也是本人多帶帶拉出來總結(jié)的一個原因。在此也僅針對顯示轉(zhuǎn)換做點文章,隱式轉(zhuǎn)換同樣會多帶帶拉出來總結(jié)有個函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值和。如果是值,和將分別被轉(zhuǎn)換為和。如果是數(shù)字值,只是簡單的傳入和返回。
數(shù)值轉(zhuǎn)換對個人而言是非常重要的,這也是本人多帶帶拉出來總結(jié)的一個原因。在此也僅針對顯示轉(zhuǎn)換做點文章,隱式轉(zhuǎn)換同樣會多帶帶拉出來總結(jié)
數(shù)值轉(zhuǎn)換—Number()有 3 個函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number()、parseInt()和 parseFloat()。第一個函數(shù),即轉(zhuǎn)型函數(shù) Number()可以用于任何數(shù)據(jù)類型,而另兩個函數(shù)則專門用于把字符串轉(zhuǎn)換成數(shù)值
Number()函數(shù)的轉(zhuǎn)換規(guī)則如下。
如果是 Boolean 值,true 和 false 將分別被轉(zhuǎn)換為 1 和 0。
如果是數(shù)字值,只是簡單的傳入和返回。
如果是 null 值,返回 0。
如果是 undefined,返回 NaN。
如果是字符串,遵循下列規(guī)則:
如果字符串中只包含數(shù)字(包括前面帶正號或負號的情況),則將其轉(zhuǎn)換為十進制數(shù)值,即"1" 會變成 1,"123"會變成 123,而"011"會變成 11(注意:前導的零被忽略了);
如果字符串中包含有效的浮點格式,如"1.1",則將其轉(zhuǎn)換為對應的浮點數(shù)值(忽略前導零);
如果字符串中包含有效的十六進制格式,例如"0xf",則將其轉(zhuǎn)換為相同大小的十進制整數(shù)值;
如果字符串是空的(不包含任何字符),則將其轉(zhuǎn)換為 0;
如果字符串中包含除上述格式之外的字符,則將其轉(zhuǎn)換為 NaN。
如果是對象,則調(diào)用對象的 valueOf()方法,然后依照前面的規(guī)則轉(zhuǎn)換返回的值。如果轉(zhuǎn)換的結(jié)果是 NaN,則調(diào)用對象的 toString()方法,然后再次依照前面的規(guī)則轉(zhuǎn)換返回的字符串值。
// Boolean Number(true); // 1 Number(false); // 0 // 數(shù)字 Number(12); // 12 Number(012); // 10 Number(0xa1); // 161 // null Number(null); // 0 // undefined Number(undefined); // NaN // string Number("000011"); // 11 Number("01.1"); // 1.1 Number("0xf"); // 15 Number(""); // 0 Number("Hello world!"); // NaN // object Number({a:0}); // NaN toString()后只為"[object Object]" Number([1,2]); // NaN toString()后值為“1,2” Number([1]); // 1 toString()后值為“1”數(shù)值轉(zhuǎn)換—parseInt()
由于 Number()函數(shù)在轉(zhuǎn)換字符串時比較復雜而且不夠合理,因此在處理整數(shù)的時候更常用的是 parseInt()函數(shù)。parseInt()函數(shù)在轉(zhuǎn)換字符串時,更多的是看其是否符合數(shù)值模式
轉(zhuǎn)換規(guī)則:
從第一位**非空字符**開始判斷(忽略字符串前面的空格) 如果找到的第一位不是數(shù)字字符或者負號,parseInt() 就會返回 NaN => 用 parseInt()轉(zhuǎn)換空字符串會返回 NaN(Number()對空字符返回 0) 如果第一個字符是數(shù)字字符,parseInt()會繼續(xù)解析第二個字符,直到解析完所有后續(xù)字符或者遇到了一個非數(shù)字字符 parseInt()能夠識別出八進制和十六進制
parseInt("1234blue"); // 1234 parseInt(""); // NaN parseInt("0xA"); // 10(十六進制數(shù)) parseInt(22.5); // 22 parseInt("070"); // 56(八進制數(shù)) parseInt("70"); // 70(十進制數(shù)) parseInt("0xf"); // 15(十六進制數(shù))
你在試驗進制問題的時候可能會有疑問,懷疑是不是我弄錯了。因為在使用 parseInt()解析像八進制字面量的字符串時,ECMAScript 3 和 5 存在分歧
//ECMAScript 3 認為是 56(八進制),ECMAScript 5 認為是 70(十進制) var num = parseInt("070");
因此,書中建議在進行數(shù)值轉(zhuǎn)換時,指明轉(zhuǎn)換的基數(shù)
指明基數(shù)后,不需要在數(shù)值前添加‘0’或‘0x’
var num1 = parseInt("10", 2); //2 (按二進制解析) var num2 = parseInt("10", 8); //8 (按八進制解析) var num3 = parseInt("10", 10); //10(按十進制解析) var num4 = parseInt("10", 16); //16(按十六進制解析)數(shù)值轉(zhuǎn)換—parseFloat()
轉(zhuǎn)換規(guī)則:
從第一位**非空字符**開始判斷(忽略字符串前面的空格) 如果找到的第一位不是數(shù)字字符、負號或者小數(shù)點,parseFloat() 就會返回 NaN => 用 parseFloat()轉(zhuǎn)換空字符串會返回 NaN(Number()對空字符返回 0) 如果第一個字符是三者之一,則繼續(xù)解析第二個字符,直到解析完所有后續(xù)字符或者遇到了一個非數(shù)字字符 => 字符串中的第 一個小數(shù)點是有效的,而第二個小數(shù)點就是無效的了,因此它后面的字符串將被忽略
注意:如果字符串包含的是一個可解析為整數(shù)的數(shù)(沒有小數(shù)點,或者小數(shù)點后 都是零),parseFloat()會返回整數(shù)
parseFloat("1234blue"); // 1234 (整數(shù)) parseFloat("0xA"); // 0 parseFloat("22.5"); // 22.5 parseFloat("22.34.5"); // 22.34 parseFloat("0908.5"); // 908.5 parseFloat("3.125e7"); // 31250000
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/84743.html
摘要:用表示法表示的數(shù)值等于前面的數(shù)值乘以的指數(shù)次冪。下面是一個使用表示法表示數(shù)值的例子等于注意浮點類型精度控制的兩個方法是原型上實現(xiàn)的一個方法,其作用是對一個浮點數(shù)進行四舍五入并保留固定小數(shù)位。 進制表示 談到Number類型,不得不提進制(此處不做過多介紹)八進制字面值的第一位必須是零(0),然后是八進制數(shù)字序列(0~7)十六進制字面值的前兩位必須是 0x,后跟任何十六進制數(shù)字(0~9 ...
摘要:一寫在前面最近重讀高級程序設(shè)計,總結(jié)下來,查漏補缺。但這種影響是單向的修改命名參數(shù)不會改變中對應的值。這是因為對象的長度是由傳入的參數(shù)個數(shù)決定的,不是由定義函數(shù)時的命名參數(shù)的個數(shù)決定的。實際改變會同步,改變也會同步 一、寫在前面 最近重讀《JavaScript高級程序設(shè)計》,總結(jié)下來,查漏補缺。 二、JS簡介 2.1 JS組成 ECMAscript:以ECMA-262為基礎(chǔ)的語言,由...
摘要:數(shù)據(jù)類型中有種簡單數(shù)據(jù)類型也稱為基本數(shù)據(jù)類型和。因為特殊值被認為是一個空的對象引用。盡管和有這樣的關(guān)系,但它們的用途完全不同。這樣做不僅可以體現(xiàn)作為空對象指針的慣例,而且也有助于進一步區(qū)分和。 數(shù)據(jù)類型 ECMAScript中有5種簡單數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型):undefined,null,boolean,number和string。 typeof typeof null會返回o...
摘要:寫在開頭本篇是小紅書筆記的第六篇,也許你會奇怪第六篇筆記才寫語法基礎(chǔ),筆者是不是穿越了。可移步筆者的文章中替換方式參考文檔高級程序設(shè)計作者以樂之名本文原創(chuàng),有不當?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVblGMc?w=600&h=400); 寫在開頭 本篇是小紅書筆記的第六篇,也許你會奇怪第六篇筆記才寫語法基礎(chǔ),筆者是不是穿越了。...
摘要:尚未聲明的變量,只能執(zhí)行一項操作,就是檢測該變量的數(shù)據(jù)類型。表示的是空對象指針,因此,使用操作符得到的結(jié)果是。 這篇筆記的內(nèi)容對應的是《JavaScript高級程序設(shè)計(第三版)》中的第三章。 1.語法 1-1 區(qū)分大小寫 ECMAScript 中的一切都是區(qū)分大小寫的。 test 和 Test 首字母不同,那么它們就不相同 typeof 和 typeOf 中間有個字母大小寫不同...
閱讀 3234·2021-11-18 10:02
閱讀 1936·2021-09-22 10:54
閱讀 2989·2019-08-30 15:43
閱讀 2576·2019-08-30 13:22
閱讀 1575·2019-08-29 13:57
閱讀 1041·2019-08-29 13:27
閱讀 731·2019-08-26 14:05
閱讀 2512·2019-08-26 13:30