JS数据类型转换
2017-11-23 23:42
537 查看
JavaScript 是一种动态类型语言,变量没有类型限制,可以随时赋予任意值。
1、强制转换
强制转换主要指使用Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。
Number()
ECMAScript 提供了两种把非数字的原始值转换成数字的方法,即 parseInt() 和 parseFloat()。
上面代码中,parseInt逐个解析字符,而Number函数整体转换字符串的类型。Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。
Number() 原理如下:
报错:Cannot convert object to primitive value(…)
比较上面代码结果可看出:Number()方法实际是先调用对象自身的valueOf(),如果返回的结果不是原始类型值,则再调用自身的toString()方法。
String()
String方法背后的转换规则,与Number方法基本相同,只是互换了valueOf方法和toString方法的执行顺序。
Boolean()
使用Boolean函数,可以将任意类型的变量转为布尔值
它的转换规则相对简单:除了以下六个值的转换结果为false,其他的值全部为true。
undefined
null
-0
0或+0
NaN
”(空字符串)
2. 自动转换(隐式转换)
除了加法运算符有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。注意:null 转为数值时为0,而 undefined 转为数值时为 NaN。
1、强制转换
强制转换主要指使用Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。
Number()
Number(1) 1 Number('123') 123 Number('hello world') NaN Number(true) 1 Number(false) 0 Number(null) 0 Number(undefined) NaN Number([1,2,3]) NaN Number([3]) 3 Number(function(){}) NaN Number({}) NaN
ECMAScript 提供了两种把非数字的原始值转换成数字的方法,即 parseInt() 和 parseFloat()。
parseInt('123abc') 123 parseInt('abc123') NaN parseFloat('abc123.123') NaN parseFloat('123.123qwe') 123.123
上面代码中,parseInt逐个解析字符,而Number函数整体转换字符串的类型。Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。
Number() 原理如下:
var obj = { valueOf: function () { return {}; }, toString: function () { return {}; } }; Number(obj)
报错:Cannot convert object to primitive value(…)
var obj = { valueOf: function () { return []; }, toString: function () { return 3; } }; Number(obj) 3
var obj = { valueOf: function () { return 5; }, toString: function () { return 3; } }; Number(obj) 5
比较上面代码结果可看出:Number()方法实际是先调用对象自身的valueOf(),如果返回的结果不是原始类型值,则再调用自身的toString()方法。
String()
String('111') "111" String(222) "222" String(true) "true" String('false') "false" String(undefined) "undefined" String(null) "null" String('') "" String([]) "" String([1,2,3]) "1,2,3" String({x:1, y:2}) "[object Object]" String(function(){}) "function (){}"
String方法背后的转换规则,与Number方法基本相同,只是互换了valueOf方法和toString方法的执行顺序。
Boolean()
使用Boolean函数,可以将任意类型的变量转为布尔值
Boolean(1) true Boolean(0) false Boolean('') false Boolean('123') true Boolean(null) false Boolean(undefined) false Boolean([]) true Boolean({}) true Boolean(NaN) false
它的转换规则相对简单:除了以下六个值的转换结果为false,其他的值全部为true。
undefined
null
-0
0或+0
NaN
”(空字符串)
2. 自动转换(隐式转换)
if('abc'){console.log(1)} 1
if(1+'1'){console.log(1+'1')} 11 4000
除了加法运算符有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。注意:null 转为数值时为0,而 undefined 转为数值时为 NaN。
"1"-1 0 "undefined"-1 NaN null-0 0 null-1 -1 true-1 0 false-0 0 "1"*1 1 "2"/2 1 "2"%1 0
相关文章推荐
- 全面解析js中的数据类型与类型转换
- JS 数据类型转换和数据有效性判断
- JS 数据类型转换
- js数据类型转换
- JS基础之变量 数据类型 类型转换 parseInt 函数
- js基本数据类型转换
- js整数字符串转换为金额类型数据(示例代码)
- 第23天:js-数据类型转换
- JS 数据类型转换
- js中数据类型转换的三种方法 重要
- JS 数据类型转换
- 【Miaov】JS4-数据类型、类型转换
- js中关于数据类型的转换
- JS 数据类型转换
- js常量 数据类型 数据类型转换
- js 数据类型与转换
- js 基础 数据类型及转换 进制 操作符 ...
- JS运算符及部分数据类型转换
- js 数据类型转换
- JS数据的类型和转换