代碼報錯不知道原因?看看你是否在類型的轉換出了錯


了解JavaScript中的五種基本數(shù)據(jù)類型與類型之間的轉換

首先我們先來了解下五種基本類型都有哪些

基本數(shù)據(jù)類型: string number Boolean null undefined


1. 字符串 String

????????????var a = '內(nèi)容';

? ????? ????var a = "內(nèi)容";

字符串特點:

????????字符串一旦創(chuàng)建,它們的值不能改變, (要改變的話:先銷毀原來的字符串,再使用新的字符串填? ? ? ? ?充變量)

2. 數(shù)字? Number

? ? ????var a = 1;

? ? ????var b = 124;

? ? (1)數(shù)字有整數(shù),浮點數(shù);

? ? ? ? ? ? ? ? ?所謂的浮點數(shù)值,就是該數(shù)值中必須包含一個小數(shù)點,并且小數(shù)點后必須至少有一位數(shù)字

????????????????由于保存浮點數(shù)值需要的內(nèi)存空間是保存整數(shù)值的兩倍,因此ECMAScript會不失時機地將浮點? ? ? ? ? ? ?數(shù)值轉換為整數(shù)值

????????????????????????1. =》1

????????????????????????10.0 =》? ? ? ? 10

? ? (2)范圍從負無窮(-Infinity)到0 到正無窮(+Infinity);

? ? ? ? ? ? ? ?* Infinity是無法參與計算的;

? ? ? ? ? ? ? ?* 判斷值是否超過JavaScript數(shù)值范圍可以使用:

????????????????????isFinite(num)

? ? ?(3)?NaN :即非數(shù)值(Not a Number)是一個特殊的數(shù)值;

? ? ? ? ? ? ? ? ?* NaN指的"不是一個數(shù)字",可以理解為"無效數(shù)值","失敗數(shù)值", "壞數(shù)值";

? ? ? ? ? ? ? ? ?* 用于指出數(shù)字類型中錯誤的情況:執(zhí)行數(shù)學運算沒有成功,這是失敗后返回的結果;

? ? ? ? ? ? ? ? ?* 任何涉及NaN的操作都會返回NaN;

? ? ? ? ? ? ? ? ?* NaN與任何值都不相等;

? ? ? ? ? ? ? ? ?*?判斷是否"不是數(shù)值",參數(shù)為任意類型:?isNaN();

3. 布爾? Boolean

? ? ????var a = true;

? ? ????var a = false;

????只有兩個字面值: true 和 false

????在ECMAScript中所有的類型的值都有與這兩個Boolean值等價的值

4. null? 空

? ? ????var a = null;

? ? ????空對象指針? ? ? 準備給對象用的坑

????????null表示準備用來保存對象,還沒有真正保存對象的值

? ? ? ? typeof檢測null時會返回? ? ? "object" :

????????最初在JavaScript最初實現(xiàn)中,JavaScript的值是由一個表示類型的標簽和實際數(shù)值來表示的, 對象的類型標簽是0,由于null代表的空指針,因此null的類型標簽也成為了0,typeofnull就返回了object

5. undefined? 未定義;

? ? ????var a = undefined;

? ? ????var a;

? ? ????準備給基本數(shù)據(jù)類型用的坑

????????只有一個值,在使用var聲明變量但還沒有加以初始化賦值時,這個變量的值就是undefined

類型的轉換

? ? (1) 轉字符串:

? ??????????????String(變量):

????????????????????null與undefined可使用這個轉型函數(shù)

var str = 'abc';var num = 234;var bool = true;var un = undefined;var nu = null;

console.log(String(num)); // '234'

console.log(String(bool)); // 'true'

console.log(String(un)); // 'undefined'

console.log(String(nu)); // 'null'

????????????????變量.toString(2 || 8 || 10 || 16)

? ? ? ? ? ? ? ? ? 參數(shù)是基數(shù)(幾進制);數(shù)值、布爾值、對象和字符串都有這個方法,null與undefined則沒有

? ? ? ? ? ?數(shù)字轉為字符串的特殊方法:

? ??????????????數(shù)字.toFixed(位數(shù))

? ??????????????????????保留小數(shù)點后幾位,并采取四舍五入

? (2) 轉數(shù)字:

? ? ? ? ? ? ?*? ?Number()

? ? ? ? ? ? ? ? ? ? 布爾值:? ?true - 1; ????false - 0;

var bool = true;

console.log(Number(bool)); ????//1

var bool = false;

console.log(Number(bool));???? //0

? ??????????????????Null:? 0

var nu = null;

console.log(Number(nu)); ????//0

? ??????????????????Undefined:? NaN

var un = undefined;

console.log(Number(un)); ???? //NaN

? ? ? ? ? ? ? ? ? ? 字符串:

????????????????????????????只包含數(shù)字(前面攜帶正負號)

????????????????????????????前導零會被忽略

????????????????????????????識別浮點、整數(shù)、16進制(自動轉為同等大小的十進制數(shù)值)

????????????????????????????空字符串? - 0

????????????????????????????除上述之外 均為NaN

var c = Number('1前端'); ???? // NaN;

var c = Number('1'); ???? // 1;

var c = Number('前端1'); ???? // NaN;

? ? ? ? ? ? ? *? parseInt()? ?轉為整數(shù)

? ??????????????????????忽略字符串前面的空格,直至找到第一個非空字符,

????????????????????????如果第一個字符不是數(shù)字字符或者正負號? ? ? ? ? 返回 NaN

????????????????????????如果第一個字符是數(shù)字字符,parseInt會繼續(xù)解析第二個字符,知道解析完所有后續(xù)字符? ? ? ? ? ? ? ? ? ? ? ? 或者遇到了一個非數(shù)字字符

????????????????????????字符串以'0x'開頭且后跟數(shù)字字符,就會將其當作一個十六進制整數(shù)

????????????????????????字符串以'0'開頭且后跟數(shù)字字符,則會將其當作一個八進制數(shù)來解析

? ? ? ? ? ? ? ? ? ? ? ? 空字符串 返回 NaN

????????????????????????提供第二個參數(shù):轉換時使用的基數(shù)(進制)

var a = parseInt('123.9前端'); ???? //? 123;

var a = parseInt('前端123'); ????//? NaN;

? ? ? ? ? ? *????parseFloat()? ?轉為浮點數(shù)

? ??????????????????????第一個小數(shù)點是有效的,第二個小數(shù)點是無效的

????????????????????????只解析十進制,無第二個參數(shù)

????????????????????????十六進制式的字符串始終被轉換為 0

var b = parseFloat('1239前端'); ????//? 1239;

var b = parseFloat('1.9前端'); ????//? 1.9;

var b = parseFloat('前端1.9'); ????// NaN;

? (3) 轉布爾值:

? ? ? ? ? ? ? ? Boolean()

? ? ? ? ? ? ? ? ? ? ? 0,空字符串,NaN, undefined ,null 轉布爾都為false

基本類型之間的轉換是一個重點,一定要記清楚:

JavaScript是一種弱類型語言,其中的數(shù)據(jù)類型在不同情況下會發(fā)生隱性的轉換,如果不清楚類型的轉換,可能之后的代碼報錯都找不到原因。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 01javascript語法規(guī)范 <!DOCTYPE html> javascript語法...
    ouyangqinbin閱讀 1,390評論 0 0
  • 1、標識符 標識符是指變量、函數(shù)、屬性的名字,或函數(shù)的參數(shù)。 格式規(guī)則: 第一個字符必須是一個字母、下劃線(_)或...
    風中丶凌亂閱讀 1,746評論 0 0
  • 變量 聲明變量 命名變量區(qū)分大小寫的語言第一個字符是字母或下劃線_,數(shù)字不能作為第一個字符字符必須是字母,數(shù)字或者...
    flyingtoparis閱讀 887評論 0 0
  • 文章配套視頻 https://study.163.com/course/introduction/10059730...
    撩課_葉建華閱讀 5,024評論 7 25
  • 第一章 前端三大語言:HTML(專門編寫網(wǎng)頁內(nèi)容)、CSS(編寫網(wǎng)頁樣式)、JS(專門編寫網(wǎng)頁交互行為) 能簡寫盡...
    fastwe閱讀 1,199評論 0 0

友情鏈接更多精彩內(nèi)容