概述
文章目录
- 1. typeof 操作符
- 2.转数值
- 2.1 Number()函数的转化规则:
- 2.2 parseInt()
- 2.3 parseFloat()
- 3.转字符串
- 3.1 toString()
- 3.2 String()
- 4. 转布尔值
JavaScript中有7种数据类型:
6 种原始类型(简单类型):
- 数值:Number:整数和小数
- 字符串:String:字符组成的文本
- 布尔:Boolean:true和false
- 两个特定值Null:表示无值,即此处的值就是“无”的状态
- Undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值著作权归作者所有。
- 符号:Symbol (ECMAScript 6 新定义)
1种引用类型(复杂类型):
- Object
Object本质上是由一组无序的键值对组成的.
1. typeof 操作符
使用 typeof
操作符可以检测基本数据类型,对一个值使用 typeof
操作符可能会返回下列某个字符串:
- ‘undefined’ —— 这个值未定义
- ‘boolean’ —— 这个值是布尔值
- ‘Stinrg’ —— 这个是是字符串
- ‘number’ —— 这个值是数值
- ‘Object’ —— 这个值是对象
- ‘function’ —— 这个值是函数
一些使用 typeof
操作符的例子:
var a;
var obj = {
name:"why",
age:18
}
console.log(typeof 'abcdef');
console.log(typeof obj);
console.log(typeof 12);
console.log(typeof a);
打印的结果:
2.转数值
有3个函数可以把非数值转化为数值: Number
, parseInt()
, parseFloat()
,第一个函数可以用于任何数据类型,二另外两个函数则专门用于把字符串转化为数.这三个函数对于同样的输入会有不同的返回结果.
2.1 Number()函数的转化规则:
Boolean
,false
转化为0
,true
转化为1
;- 如果是数值,则只进行简单的传入和传出;
null
转化为0
;undefined
返回NaN
- 如果是字符串,则遵循以下规则:
- 如果字符串中值包含数字(包括前面带正号或负号的情况),则转化为十进制.
- 如果字符串中包含有效的浮点数,则会将其转化为对应的浮点数值
- 如果字符串中包含有效的进制格式,例如 “0xf” ,则将其转换为相同大小的十进制数值。
- 如果是空字符串,则转化为0
- 如果字符串中包含上述格式以外的字符,则转为
NaN
- 如果是对象,则调用对象的
valueOf()
方法,然后依照前面的规则转换返回的值,如果转化的结果是NaN
,则调用对象的toString()
方法然后再依照前面的结果返回响应的值.
使用Number
的例子:
console.log(Number('hello world'));
console.log(Number(''));
console.log(Number('0000110'));
console.log(Number(true));
2.2 parseInt()
在处理整数转换时更为常用。在转换是查看是否符合数值模式。
她
遵循的转化规则如下:
- 如果在转换字符串的话,会忽略前面的空格,直到找到第一个非空格字符。
- 如果第一个字符不是数字字符或负号后不是数字字符,就会返回
NaN
。 - 如果是空字符串,就会返回
NaN
。 - 如果第一个字符是数字字符,parseInt()会继续解析下去,直到解析完或遇到了一个非数字字符。
- 因为小数点不是有效的数字字符,类似
"22.5"
会被转换为22
。
-parseInt
能解析不同进制的数字字符。 - 因为
javascript
引擎不同,ECMAScript3
和ECMAScript
在解析八进制字符串时存在分歧,建议都加上进制参数。
console.log(parseInt('123asc')); //123
console.log(parseInt('')); //NaN
console.log(parseInt('0xA')); //10(十进制数)
console.log(parseInt(22.5)); //22
console.log(parseInt('070')); //56(八进制)
console.log(parseInt('70')); //70(十进制数)
console.log(parseInt('0xf')); //15
在ECMAScript 3 JavaScript
中,'070’被当成八进制字面量,因此转化后的十进制为56,而在ECMAScript 5 JavaScript
中,parseInt()已经不具备解析八进制的能力,因此前面的0被认为是无效的,从而将这个值当成70,结果就得到十进制的70.
为了消除在使用parseInt()函数时可能导致的困惑,可以为这个函数提供第二个参数,转化时使用基数(即多少进制),如果知道要解析的值是十六进制格式的字符串,那么指定基数16作为第二个参数,可以保证得到正确的结果,例:
console.log(parseInt('0xAF',16)); //175
实际上,如果指定了16作为第二个参数,字符串可以不带前面的0x
,如下所示:
console.log(parseInt('AF',16)); //175
console.log(parseInt('AF')); //NaN
在上面的例子中,第一个转化成功了,第二个却失败了.差别在于第一个转换传入了技术,第二个没有传入技术,明确告诉了parseInt()
要解析一个十六进制格式的字符串,二第二个转换发现第一个字符不是数字字符,因此就自动终止了.
指定基数会影响数值的输出结果:
console.log(parseInt('10',2)); //2
console.log(parseInt('10',8)); //8
console.log(parseInt('10',10)); //10
console.log(parseInt('10',16)); //16
2.3 parseFloat()
- 字符串从头解析到尾,或忽略前面的空格,直到遇到第一个无效的浮点数字字符为止.
- 第一个小数点有效,之后的小数点就无效,后面跟着的字符串将会被忽略。
- 可以识别不同进制的浮点数值格式,但都是转换为十进制值,无第二个参数指定转换进制。
- 十六进制的字符串始终会被转化为0。
- 如果解析的是整数,没有小数点或是小数点后都是零,会返回整数。
console.log(parseFloat('123asc')); //123
console.log(parseFloat('')); //NaN
console.log(parseFloat('0xA')); //0
console.log(parseFloat(22.5)); //22.5
console.log(parseFloat('22.5.344')); //22.5
console.log(parseFloat('098.034')); //90.034
console.log(parseFloat('2.12e10')); //21200000000
3.转字符串
要把一个值转为字符串有两种方法.第一种是使用几乎每个值都有的toString()
方法,这个方法唯一要做的就是返回相应值的字符串的表现.还有一个是 String()
方法.
3.1 toString()
看下面的例子:
var age = 18;
var strAge = age.toString();
var show = true;
var strShow = show.toString();
console.log(strAge,strShow); //字符串18和字符串true
数值,布尔值,对象和字符串(每个字符串也有一个toString
方法,返回该字符串的副本)都有toString()
方法.但是 null
和 undefined
没有这个方法.
多数情况下,调用toString()
方法不需要传递参数,但是,在调用数值的toString()
方法的时候,可以传递一个参数,输出数值的基数.默认情况下,toString()
方法以十进制格式返回数值的字符串表示,而通过传递基数,toString()
方法可以输出十进制,八进制,十六进制,二进制乃至其他任何有效进制的数据,示例如下:
var num = 10;
console.log(num.toString()); //'10'
console.log(num.toString(2)); //'1010'
console.log(num.toString(8)); //'12'
console.log(num.toString(10)); //'10'
console.log(num.toString(16)); //'a'
通过上面的实例,我们可以看出,通过指定基数,toString()
方法会改变输出的值,而数值10
根据基数的不同,可以在输出的被转化为不同的数值格式.注意,在默认情况下输出的值与指定基数10
的结果是相同的.
3.2 String()
在不知道要转换的值是 null
或是 undefined
的情况下.还可以使用转型函数String()
,这个函数能够将任意类型的值转化为字符串,String()
方法的转换遵循以下规则:
- 如果值有
toString()
方法,则会调用toString()
方法; - 如果值是
null
, 则会返回"null"
; - 如果值是
undefined
则会返回"undefined"
;
示例如下:
var a = 10;
var b = true;
var c = null;
var d ;
console.log(String(a)); //'10'
console.log(String(b)); //'true'
console.log(String(c)); //'null'
console.log(String(d)); //'undefined'
4. 转布尔值
没有toBoolean()这个方法,但有全局方法Boolean()。
数据类型 | 转为ture的值 | 转为false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | “”(空字符串) |
Number | 任何非零数值(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
undefined | 不适用 | undefined |
总结:只有undefined
,null
, 0
,空字符串
,NaN
会转化为 false
,其余均为 true
.
最后
以上就是含糊衬衫为你收集整理的JavaScript数据类型转换总结1. typeof 操作符2.转数值3.转字符串4. 转布尔值的全部内容,希望文章能够帮你解决JavaScript数据类型转换总结1. typeof 操作符2.转数值3.转字符串4. 转布尔值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复