JS数据类型转换
来源:互联网 发布:mac safari不显示图片 编辑:程序博客网 时间:2024/06/02 04:29
JavaScript 是一种动态类型语言,变量没有类型限制,可以随时赋予任意值。
1、强制转换
强制转换主要指使用Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。
Number()
Number(1)1Number('123')123Number('hello world')NaNNumber(true)1Number(false)0Number(null)0Number(undefined)NaNNumber([1,2,3])NaNNumber([3])3Number(function(){})NaNNumber({})NaN
ECMAScript 提供了两种把非数字的原始值转换成数字的方法,即 parseInt() 和 parseFloat()。
parseInt('123abc')123parseInt('abc123')NaNparseFloat('abc123.123')NaNparseFloat('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)trueBoolean(0)falseBoolean('')falseBoolean('123')trueBoolean(null)falseBoolean(undefined)falseBoolean([])trueBoolean({})trueBoolean(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
除了加法运算符有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。注意:null 转为数值时为0,而 undefined 转为数值时为 NaN。
"1"-10"undefined"-1NaNnull-00null-1-1true-10false-00"1"*11"2"/21"2"%10
- js常量 数据类型 数据类型转换
- js数据类型转换
- js数据类型转换
- js基本数据类型转换
- JS数据类型转换
- js的数据类型转换
- js 数据类型转换
- JS 数据类型转换
- JS 数据类型转换
- JS 数据类型转换
- JS数据类型转换
- JS 数据类型转换
- JS 数据类型转换
- js中数据类型转换
- JS 数据类型转换
- JS 数据类型转换
- JS 数据类型转换
- JS 数据类型转换
- Android AsyncTask介绍和一个简单的小例子
- Xcode 技巧
- 基于FFmpeg的推流器
- noip2017宝藏
- 树莓派3入手环境搭建(QT+OpenCV)
- JS数据类型转换
- OS ##处理器管理
- 11-23 Python 字符串数字练习 二元一次方程求解
- Linux term和WindowsDOS部分简单命令对照
- 如何在Linux下手动安装mongodb
- 动态库DLL
- 开始写博客了
- OS ##设备管理
- yahoo黄图识别-open nsfw