作業(yè)
數(shù)據(jù)類(lèi)型轉(zhuǎn)換指什么
顯式轉(zhuǎn)換字符串的方法有幾種
String()和toString()方法的區(qū)別
-0,-Infinity,[],{} 轉(zhuǎn)為字符串的結(jié)果是什么
顯式轉(zhuǎn)數(shù)值的方法有幾種棚品?
-
請(qǐng)談一談Number()方法的工作原理:
- 內(nèi)置函數(shù)
- 接收任意類(lèi)型的值
- 整體轉(zhuǎn)換:
- 非數(shù)值型字符迷守,只能轉(zhuǎn)空格和小數(shù)點(diǎn)
- 空 => 0
- NaN : {} 侥钳、undefined刹勃、[1,2,3]
請(qǐng)談一談parseInt()方法的工作原理
請(qǐng)談一談parseFloat()方法的工作原理
請(qǐng)談一談Boolean()方法的工作原理:6個(gè)非布爾型的假值
數(shù)據(jù)類(lèi)型轉(zhuǎn)換指什么
分析:
- 原始類(lèi)型
- 數(shù)值
- 字符串
- 布爾值
- Undefined
- null
- Symbol
- 對(duì)象類(lèi)型
數(shù)據(jù)類(lèi)型轉(zhuǎn)換指把任意一種數(shù)據(jù)類(lèi)型轉(zhuǎn)換成為數(shù)值、字符串或布爾值類(lèi)型。
- 任何一種數(shù)據(jù)類(lèi)型都可以轉(zhuǎn)成數(shù)值
- 任何一種數(shù)據(jù)類(lèi)型都可以轉(zhuǎn)成字符串
- 任何一種數(shù)據(jù)類(lèi)型都可以轉(zhuǎn)成布爾值
顯式數(shù)據(jù)類(lèi)型轉(zhuǎn)換:
ECMAScript為我們做顯式數(shù)據(jù)類(lèi)型轉(zhuǎn)換提供了三個(gè)函數(shù)
- Number()
- String()
- Boolean()
顯式轉(zhuǎn)字符串
任何一種數(shù)據(jù)類(lèi)型都可以轉(zhuǎn)成字符串猖辫。
方法一:String(值)函數(shù)
定義:
- String()作為函數(shù)調(diào)用時(shí)酥泞,它將傳入的值轉(zhuǎn)換為字符串。
- String 用于構(gòu)造函數(shù)創(chuàng)建新的 String 對(duì)象啃憎。
語(yǔ)法
new String(thing)
String(thing)
方法二: 值.toString()函數(shù)
值.toString()是所有數(shù)據(jù)類(lèi)型的方法芝囤。(null和undefined除外)
示例
let a = 10
a = Infinity
a = NaN
a = true
a = undefined
a = null
a = String(a)
//console.log(a,typeof a)//
let b = 100
b = undefined
b = null
b = true
b = b.toString()
// console.log(typeof b)
let c = 0
c = -0
c = Infinity
c = -Infinity
c = NaN
c = [1,2,3]
c = []
c = function(){console.log('hello')}
c = {} //[object Object]
c = {name:'張三'} //[object Object]
c = String(c)
console.log(c,typeof c)
顯式轉(zhuǎn)數(shù)值
任何一種數(shù)據(jù)類(lèi)型都可以轉(zhuǎn)成數(shù)值
方法一:Number(值)
定義:
- Number()作為函數(shù)調(diào)用時(shí),它將傳入的任意值轉(zhuǎn)換為number類(lèi)型辛萍。
- Number()用于構(gòu)造函數(shù)創(chuàng)建新的 Number 對(duì)象凡人。
語(yǔ)法
new Number(value)
Number(value)
規(guī)則:
- Number()方法是整體轉(zhuǎn)換:對(duì)傳入值的每一個(gè)字符進(jìn)行轉(zhuǎn)換,有一個(gè)字符無(wú)法轉(zhuǎn)換就拋出NaN
- 能轉(zhuǎn)的字符:空格叹阔、小數(shù)點(diǎn)
- 字符串:可以轉(zhuǎn)換小數(shù)點(diǎn)
- 字符串:可以轉(zhuǎn)首尾空格
- 字符串:Number方法無(wú)法轉(zhuǎn)換字母特殊符號(hào)
- 字符串:空字符串 => 0
- 布爾值:true => 1 false => 0
- 6個(gè)假值是非布爾型
- 數(shù)組:空數(shù)組 => 0
- 數(shù)組:[100] => 100
- 數(shù)組: [1,2,3] => NaN
- 對(duì)象: {} => NaN
- null : null => 0
- Undefined: undefined => NaN
示例:Number()
let n = '10'
n = '10px'
n = '10.999'//js中所有的數(shù)值都是浮點(diǎn)型的。
n = '.10999'//0.10999
n = '100 999'
n = ' 100'
n = '100 '
n = 'px1000'
n = '100-00'
n = '1100.'
n = 'abc' //NaN
///////////////
n = true
n = !true
////////////
n = undefined //NaN undefined => "未定義" 系統(tǒng)級(jí) 意外的 錯(cuò)誤
n = null // 0 null => "空" 程序級(jí) 意料中 正常
/////////
n = '' //0
n = [] //0
n = {} //NaN
n = [100] //100
n = [1,2,3] //NaN
n = Number(n)
console.log(n,typeof n)
方法二:parseInt()
定義:
parseInt() 函數(shù)解析字符串參數(shù)并返回指定基數(shù)(數(shù)學(xué)數(shù)字系統(tǒng)中的基數(shù))的整數(shù)传睹。
- 參數(shù)1:字符串
- 參數(shù)2:指定基數(shù)耳幢,也就是進(jìn)制 可選
語(yǔ)法
parseInt(string)
parseInt(string, radix)
示例:parseInt()
let v = '100'
v = '3.1415926'
v = '10.5px'
v = ' 3.14px'
v = '100 200'
v = '100 '
v = '100px' //對(duì)字符串從左向右逐一檢測(cè),遇到非數(shù)值字符就停止檢測(cè)欧啤,返回提取成功的數(shù)值
v = 'abc' //NaN
v = true //NaN String(true) => 'true' => NaN
v = false //NaN
v = undefined //NaN
v = null //NaN
v = [] // String([]) => ''
v = 100.55 //無(wú)意義
v = ''//
v = parseInt(v)
console.log(v, typeof v)
//console.log(parseInt(String([])))
方法三:parseFloat()
定義:parseFloat() 函數(shù)解析一個(gè)字符串參數(shù)并返回一個(gè)浮點(diǎn)數(shù)睛藻。
語(yǔ)法
parseFloat(string)
- string:接收一個(gè)字符串參數(shù)
示例:parseFloat()
let f = '3.1415px'//3.1415
f = true // String(true) => 'true'
f = parseFloat(f)
console.log(f,typeof f)