您好,欢迎访问一九零五行业门户网

javascript如何转数据类型

javascript转数据类型的方法:1、根据运算环境自动转换值的数据类型,以满足运算需要;2、使用 tostring()、string()、parseint()等javascript内置函数来强制转换数据类型。
本教程操作环境:windows7系统、javascript1.8.5版、dell g3电脑。
javascript是一门动态语言,所谓的动态语言可以暂时理解为在语言中的一切内容都是不确定的。比如一个变量,这一时刻是个整型,下一时刻可能会变成字符串了。虽然变量的数据类型是不确定的,但是各种运算符对数据类型是有要求的。如果运算符发现,运算子的类型与预期不符,就会自动转换类型。
简单来说,javascript 能够根据运算环境自动转换值的类型,以满足运算需要。
例:使用加号运算符把值转换为字符串
//把数字转换为字符串var n = 123;n = n + "";console.log(typeof n); //返回类型为 string
例:使用乘运算符把字符串转为数值
var n = "123";n = n * 1;console.log(typeof n); //返回类型为 number
但是在很多情况下需要开发者手动转换数据类型(强制类型转换),以控制运算过程。
1、其他的数据类型转换为string
方式一:tostring()方法
调用被转换数据类型的tostring()方法,该方法不会影响到原变量,它会将转换的结果返回,但是注意:null和undefined这两个值没有tostring,如果调用他们的方法,会报错。
var a = 123a.tostring()//"123"var b = null;b.tostring()//"报错"var c = undefinedc.tostring()//"报错"
采用 number 类型的 tostring() 方法的基模式,可以用不同的基输出数字,例如二进制的基是 2,八进制的基是 8,十六进制的基是 16
var inum = 10;alert(inum.tostring(2)); //输出 "1010"alert(inum.tostring(8)); //输出 "12"alert(inum.tostring(16)); //输出 "a"
方式二:string()函数
使用string()函数做强制类型转换时,对于number和boolean实际上就是调用的tostring()方法,
但是对于null和undefined,就不会调用tostring()方法,它会将null直接转换为"null",将undefined 直接转换为"undefined"
var a = nullstring(a)//"null"var b = undefinedstring(b)//"undefined"
string方法的参数如果是对象,返回一个类型字符串;如果是数组,返回该数组的字符串形式。
string({a: 1}) // "[object object]"string([1, 2, 3]) // "1,2,3"
2、其他的数据类型转换为number
方式一:使用number()函数
下面分成两种情况讨论,一种是参数是原始类型的值,另一种是参数是对象
(1)原始类型值
①字符串转数字
如果是纯数字的字符串,则直接将其转换为数字
如果字符串中有非数字的内容,则转换为nan
如果字符串是一个空串或者是一个全是空格的字符串,则转换为0
number('324') // 324number('324abc') // nannumber('') // 0
②布尔值转数字:true转成1,false转成0
number(true) // 1number(false) // 0
③undefined转数字:转成nan
number(undefined) // nan
④null转数字:转成0
number(null) // 0
⑤number() 接受数值作为参数,此时它既能识别负的十六进制,也能识别0开头的八进制,返回值永远是十进制值
number(3.15); //3.15number(023); //19number(0x12); //18number(-0x12); //-18
(2)对象
简单的规则是,number方法的参数是对象时,将返回nan,除非是包含单个数值的数组。
number({a: 1}) // nannumber([1, 2, 3]) // nannumber([5]) // 5
方式二:parseint() & parsefloat()
这种方式专门用来对付字符串,parseint()一个字符串转换为一个整数,可以将一个字符串中的有效的整数内容取出来,然后转换为number。parsefloat()把一个字符串转换为一个浮点数。parsefloat()作用和parseint()类似,不同的是它可以获得有效的小数。
console.log(parseint('.21')); //nanconsole.log(parseint("10.3")); //10console.log(parsefloat('.21')); //0.21console.log(parsefloat('.d1')); //nanconsole.log(parsefloat("10.11.33")); //10.11console.log(parsefloat("4.3years")); //4.3console.log(parsefloat("he40.3")); //nan
parseint()在没有第二个参数时默认以十进制转换数值,有第二个参数时,以第二个参数为基数转换数值,如果基数有误返回nan
console.log(parseint("13")); //13console.log(parseint("11",2)); //3console.log(parseint("17",8)); //15console.log(parseint("1f",16)); //31
两者的区别:number函数将字符串转为数值,要比parseint函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为nan。
parseint('42 cats') // 42number('42 cats') // nan
上面代码中,parseint逐个解析字符,而number函数整体转换字符串的类型。
另外,对空字符串的处理也不一样
number(" "); //0 parseint(" "); //nan
3、其他的数据类型转换为boolean
它的转换规则相对简单:只有空字符串("")、null、undefined、+0、-0 和 nan 转为布尔型是 false,其他的都是 true,空数组、空对象转换为布尔类型也是 true,甚至连false对应的布尔对象new boolean(false)也是true
boolean(undefined) // falseboolean(null) // falseboolean(0) // falseboolean(nan) // falseboolean('') // false
boolean({}) // trueboolean([]) // trueboolean(new boolean(false)) // true
【推荐学习:javascript高级教程】
以上就是javascript如何转数据类型的详细内容。
其它类似信息

推荐信息