6.3 js中数据类型之间的转换

不足之处欢迎补充!!!

一、前言

之前对于数据类型之间的转换的掌握到了一定的程度,突然有一天想把转换的全部方法举例出来,就蒙了。因此,就有了这篇文章。

二、正文

1、转换成字符串(String)类型

这里的‘V’代指其他数据类型

  • v+"" 拼接运算,任何加字符串的表达式都为字符串

Number类型转换成字符串类型

var a = 123;
console.log(a,typeof a);//123 'number'数字类型
var b = a+"";
console.log(b,typeof b);//'123' 'string' 字符串类型

注:这里打印出来的实际是没有单引号的,但是为了区分为字符串方才加上
Boolean类型转换成字符串类型

var c = true;
console.log(c,typeof c);//true 'boolean'
var d = c+"";
console.log(d,typeof d);//'true' 'string'

null类型转换成字符串类型

var e = null;
console.log(e,typeof e);//null 'object'
var f = e+"";
console.log(f,typeof f);//'null' 'string'

undefined类型转换成字符串类型

var g = null;
console.log(g,typeof g);//undefined 'undefined'
var h = g+"";
console.log(h,typeof h);//'undefined' 'string'

对象转换成字符串类型

var i = {};
console.log(i,typeof i);//{} 'object'
var j = i+"";
console.log(j,typeof j);//'[object Object]' 'string'

数组转换成字符串类型

var k = [1,4,5];
console.log(k,typeof k);//[1,4,5] 'object'
var l = k+"";
console.log(l,typeof l);//'1,4,5' 'string'

函数转换成字符串类型

var m = function(){};
console.log(m,typeof m);//[Function: m] 'function'
var n = m+"";
console.log(n,typeof n);//'function(){}' 'string'
  • String(v)
var a = 234;            //number类型
console.log(String(a));//'234'

var b = false;        //boolean类型
console.log(String(b))//'false'

var c = null;        //null类型
console.log(String(c))//'null'

var d = undefined;   //undefined类型
console.log(String(d))//'undefined'

var e = {name:"larry"} //对象
console.log(String(e))//'[object Object]'

var f = [5,4,2] //数组
console.log(String(f))//'5,4,2'

var g = function(){var b = 3} //函数
console.log(String(g))//'function () {var b = 3}'
  • v.toString() null与undefined除外
var a = 345;
console.log(a.toString())//'345'

var b = false;
console.log(b.toString())//'false'

var c = null
console.log(c.toString())//这里就会报错‘TypeError: Cannot read property 'toString' of null’

var d = {age:24}
console.log(d.toString())//'[object Object]'

var e = [3,5,6]
console.log(e.toString())//'3,5,6'

var f = function(){}
console.log(f.toString())//'function(){}'

prototype.toString.call() 可以用来判断变量是数组还是对象

var a = []
var b ={}
Object.prototype.toString.call(a)//'[object Array]'
Object.prototype.toString.call(b)//'[object Object]'

2、转换成数字(number)类型

  • +v
var a = '123'
console.log(+a,typeof +a)//123 'number'
var b = '哈'
console.log(+b,typeof +b)//NAN 'number'
                        //这里的NAN意为不是一个数字
var c = true;
console.log(+c,typeof +c)//1 'number'
var d = false;
console.log(+d,typeof +d)//0 'number

var e = null
console.log(+e)//0

var f = undefined
cosole.log(+f)//NAN

var g = {age:13}
console.log(+g)//NAN

var h = [1,4,5]
console.log(+h)//NAN

var i = function(){}
console.log(+i)//NAN
  • -(-v)
    与上面一致,这里不做举例了
  • Number(v)
    与上面一致,这里不做举例了
  • parseInt(v) 解析字符串为整数int
    与上面的区别在于如果字符串类型转换成数字类型为浮点数时,自动化为整数,向下取舍
var a = '123.78'
console.log(parseInt(a))//123
var b = 'hah'
console.log(parseInt(b))//NAN
  • parseFloat(v) 解析字符串为浮点数float
    parseInt() 区别在于遇到字符串类型为浮点数时,保持浮点数,与 +v类似
var a = '123.345'
console.log(parseFloat(a))//123.345
console.log(+a)//123.345

3、转换成布尔(boolean)类型

  • !!v
var a = 12;
console.log(!!a)//true
var a1 = -12;
console.log(!!a1)//true
var b = 0
console.log(!!b)//false
var b1 = NAN
console.log(!!b1)//false

var c = '布尔'
console.log(!!c)//true
var c1 = ''
console.log(!!c1)//false

var d = null
console.log(!!d)//false

var e = undefined
console.log(!!e)//false

  • Boolean(v)
    与上面类似,就不举例了

4、其他转换

  • JSON.stringify(v) 将js对象转换为json字符串
    区别在于属性名是否有双引号
//对象
var obj = {name:"terry",age:12,gender:"male"}
var json = JSON.stringify(obj)
console.log(json,typeof json);//'{"name":"terry","age":12,"gender":"male"}' 'string'
//字符串
var bb = 'name'
var jj = JSON.stringify(bb)//'"name"'
console.log(bb,jj);//name "name"

//数组
var a = ['la','te']
var ja = JSON.stringify(a)
cnosole.log(a,ja)//['la','te'] '["la","te"]'
  • JSON.parse(v) 将json字符串转换js对象
var json = '{"name":"terry","age":12,"gender":"male"}'
var obj = JSON.parse(json)
console.log(obj,typeof obj)//{name:"terry",age:12,gender:"male"} 'object'
  • v.join() 将数组转换成字符串
    指定连接符
var a = [1,4,5]
a.join("*")//'1*4*5'
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页