We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JavaScript里的声明变量时并没有类型这一说法,变量的类型可以随时改变
var x='a'; x // a x=2; x //2
使用Number()函数,可以将任意类型的值强制转换为数值 语法
Number()
括号里填写要进行转换的值,转换规则如下:
数值:转换了还是数值 字符:如果是数字组成的字符,可转换为数字,如果不是,返回NaN。另外,空字符串转换为0 布尔值:true为1,false为0 null:转换为0 undefined:转换为NaN 对象:除了单个数字的数组转换为数值,其他一律转换为NaN
NaN
0
true
false
Number(324) // 324 Number('324') // 324 Number('324abc') // NaN Number('') // 0 Number(true) // 1 Number(false) // 0 Number(null) // 0 Number(undefined) // NaN Number({a: 1}) // NaN Number([1, 2, 3]) // NaN Number([5]) // 5
这里提一下数值的转换,其实数值的转换背后分成了三步 第一步:调用valueOf(),如果返回原始类型的值,就直接调用number() 第二步:对第一步返回值调用toString(),如果返回原始类型的值,就调用number() 第三步:如果第二部返回的是对象,就报错
valueOf()
number()
toString()
以对象为例
var obj = {name:'yyzcl'}; v = obj.valueOf(); // v : {name: 'yyzcl'} s = v.toString(); // s : "[object Object]" Number(s); // NaN
有一个需要注意的点,我们可以自定义valueOf()和toString()函数来改变转换结果
这俩方法也可以转换数值,但是
parseInt(123) //123 parseInt('123') //123 parseInt(' 、\t\n123') //123 parseInt('123hello') //123 parseInt('+123') //123 parseInt('0123') //123 parseInt('0x10') //16 parseInt(1000000000000000000000.5) // 等同于 parseInt('1e+21') // 1 parseInt(0.0000008) // 等同于 parseInt('8e-7') // 8
parseFloat()的使用与parseInt()类似,但是有一点,parseInt()还可以进行进制转换
parseFloat()
parseInt()
parseInt()的进制转换 parseInt()可接受第二个数值参数(2到36之间),当参数为0、null、undefined时默认为10,表示第一个参数字符串的进制 如果字符串的解析也是逐个字符解析的,遇到不符合进制的数值,就直接退出解析,返回已解析好的数值。如果是首字符不符合,就直接返回NaN
null
undefined
parseInt('1000', 2) // 8 parseInt('1000', 6) // 216 parseInt('1000', 8) // 512 parseInt('10', 37) // NaN parseInt('10', 1) // NaN parseInt('10', 0) // 10 parseInt('10', null) // 10 parseInt('10', undefined) // 10 parseInt('1546', 2) // 1 parseInt('546', 2) // NaN
如果第一个参数其他进制的数值,会先转换为10进制,再进行第二参数进制的转换 对八进制0XXX的写法要尤其注意
0XXX
parseInt(0x11, 36) // 43 parseInt(0x11, 2) // 1 // 等同于 parseInt('17', 36) parseInt('17', 2) parseInt(011, 2) // NaN // 等同于 parseInt('9', 2)
当由纯数字组成的字符串进行数值转换时,可以利用-、*、/运算符将字符串自动转为数值
-
*
/
- ( - '123') //123 + '123' //123 '123' - 0 //123 '123' * 1 //123 '123' / 1 //123
String()可以将任意类型的值转换为字符串
String()
数值:转换为对应的字符串 字符串:还是字符串 布尔值:true、false null:null undefined:undefined 对象:如果是数组,返回数组的字符串形式;其他返回"[object Object]"
"[object Object]"
String(123) // "123" String('abc') // "abc" String(true) // "true" String(undefined) // "undefined" String(null) // "null" String({a: 1}) // "[object Object]" String([1, 2, 3]) // "1,2,3"
String()转换背后其实也分为三步 第一步:先调用toString()。如果返回原始类型的值,则对该值使用String()函数 第二步:如果toString()方法返回的是对象,再调用valueOf()。如果valueOf()返回原始类型的值,则对该值使用String()函数 第三步:第二步返回的是对象,就报错
利用toString()函数进行字符串转换时,数值、字符串、布尔值、对象的转换和String()一样,但是null、undefined会报错
var n=123; n.toString() // "123" '123'.toString() // "123" true.toString() // "true" false.toString() // "false" var obj={}; obj.toString() // "[object Object]" null.toString() // 报错 undefined.toString() // 报错
利用+运算符会自动转换为字符串
+
1 + '' // "1" 1 + '1' // "11" 'true' + '' // "true" 'flase' + '' // "flase" 'null' + '' // "null" 'undefined' + '' // "undefined" var obj = {name: 'yyzcl'} obj + '' // "[object Object]"
利用Boolean()可以返回一个值的布尔值 -0/0/+0、NaN、null、undefined、''/""的布尔值为false,其余值的布尔值全部都是true
Boolean()
-0/0/+0
''/""
Boolean(123) // true Boolean(0) // false Boolean(NaN) // false Boolean('') // false Boolean('123') // true Boolean(null) // false Boolean(undefin) // false
利用两次取反也可返回一个值的布尔值
!!(123) // true !!(0) // false !!(NaN) // false !!('') // false !!('123') // true !!(null) // false !!(undefin) // false
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
JavaScript里的声明变量时并没有类型这一说法,变量的类型可以随时改变
1 数值转换
1.1 Number()
使用
Number()
函数,可以将任意类型的值强制转换为数值语法
括号里填写要进行转换的值,转换规则如下:
这里提一下数值的转换,其实数值的转换背后分成了三步
第一步:调用
valueOf()
,如果返回原始类型的值,就直接调用number()
第二步:对第一步返回值调用
toString()
,如果返回原始类型的值,就调用number()
第三步:如果第二部返回的是对象,就报错
以对象为例
有一个需要注意的点,我们可以自定义
valueOf()
和toString()
函数来改变转换结果1.2 parseInt()和passeFloat()
这俩方法也可以转换数值,但是
parseFloat()
的使用与parseInt()
类似,但是有一点,parseInt()
还可以进行进制转换parseInt()
的进制转换parseInt()
可接受第二个数值参数(2到36之间),当参数为0
、null
、undefined
时默认为10,表示第一个参数字符串的进制如果字符串的解析也是逐个字符解析的,遇到不符合进制的数值,就直接退出解析,返回已解析好的数值。如果是首字符不符合,就直接返回
NaN
如果第一个参数其他进制的数值,会先转换为10进制,再进行第二参数进制的转换
对八进制
0XXX
的写法要尤其注意1.3 一点点技巧
当由纯数字组成的字符串进行数值转换时,可以利用
-
、*
、/
运算符将字符串自动转为数值2 字符串转换
2.1 String()
String()
可以将任意类型的值转换为字符串String()
转换背后其实也分为三步第一步:先调用
toString()
。如果返回原始类型的值,则对该值使用String()
函数第二步:如果
toString()
方法返回的是对象,再调用valueOf()
。如果valueOf()
返回原始类型的值,则对该值使用String()
函数第三步:第二步返回的是对象,就报错
2.2 toString()
利用
toString()
函数进行字符串转换时,数值、字符串、布尔值、对象的转换和String()
一样,但是null、undefined会报错2.3 一点点技巧
利用
+
运算符会自动转换为字符串3 布尔值转换
3.1 Boolean()
利用
Boolean()
可以返回一个值的布尔值-0/0/+0
、NaN
、null
、undefined
、''/""
的布尔值为false
,其余值的布尔值全部都是true
3.2 !!
利用两次取反也可返回一个值的布尔值
The text was updated successfully, but these errors were encountered: