JS 数据类型转换

JavaScript是弱类型语言,定义不像后台一样严格使用string、int、boolean等,而是直接一个var定义所有的对象。
玩数据类型转换之前,我们先讲讲各种数据的作用和形式。
string 字符串
Number 数字
Boolean 布尔类型

NaN 数字类型,表示数字的空和错误

undefined 表示"缺少值",就是此处应该有一个值,但是还没有定义。

undefined典型用法:
  (1)变量被声明了,但没有赋值时,就等于undefined。
  (2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
  (3)对象没有赋值的属性,该属性的值为undefined。
  (4)函数没有返回值时,默认返回undefined。
  (5)转换string失败会返回一个undefined。

null 对象为空,没有这个对象。

复杂数据类型 Data Array function Object

现在开始数据转换。
转string:
Number();用法 Number(a);
toString();用法 a.toString();
String(); 用法 String(a);
万物皆对象,所有的对象几乎都有.toString();
null , undefined不能toString(),如果要强制转换只能String();
toString()能转换的,String()都可以转换。
隐式转换:+""       隐式转换不好说,看代码更清晰。

转number:
Number();一次性全部转换,如果其中某个字符串不是数字,那么返回NaN
parseInt();只能转换成对应的整数,从第一个字符串开始转,如果其中某个字符串不是数字,那么返回这个字符串前面的数字。
parseFloat();只能转换成对应有小数的数,从第一个字符串开始转,如果其中某个字符串不是数字,那么返回这个字符串前面的数字。
隐式转换:+ - * / %  如果两个字符串是纯数字的话,可以用这五个隐式转换掉。

转Boolean:
Boolean();都可以转换。
转换为flase的有:NaN、null、""、undefined、0
转换为true的有:"123" 123,准确的说除了上面那几个转成false的之外,其他全是转成true
隐式转换:!!a

数据类型转换的例子

<!DOCTYPE html>
<meta charset="UTF-8">
<script>
var str="123";
var num=123;
var bool=false;
var arr=new Array(1,"1");
var obj=new Object();obj.name="huo an";
var nu=null;
var unde=undefined;
var strkong="";
function asd(){}

console.log("转string,顺便也请注意隐式转换");
console.log(num.toString()+"-"+typeof (num.toString()) +"-"+typeof (num+""));
console.log(bool.toString()+"-"+typeof (bool.toString()) +"-"+typeof (bool+""));
console.log(arr.toString()+"-"+typeof (arr.toString()) +"-"+typeof (arr+""));//装数组把里面的东西一起转成string了
console.log(obj.toString()+"-"+typeof (obj.toString()) +"-"+typeof (obj+""));
console.log(String(nu)+"-"+typeof (String(nu)) +"-"+typeof (nu+""));//null是一个特殊的,不能用tostring()否则会报错

var str="123a"
console.log("转number,顺便也请注意隐式转换");
console.log("123"+"23" +"-"+ typeof ("123"+"23"));//这个是错误的,这还会是string;
console.log("123"-"23" +"-"+ typeof ("123"-"23"));
console.log("123"*"23" +"-"+ typeof ("123"*"23"));
console.log("123"/"23" +"-"+ typeof ("123"/"23"));
console.log("123"%"23" +"-"+ typeof ("123"%"23"));
console.log("123"/"da" +"-"+ typeof ("123"%"23"));//字符串里若有英文,也能隐式转换,但成为number的NaN
console.log(Number(str)+"-"+typeof (Number(str)));//返回NaN
console.log(parseInt(str)+"-"+typeof (parseInt(str)));//返回123
console.log(parseFloat(str)+"-"+typeof (parseFloat(str)) );//返回123.00

console.log("转boolean,顺便也请注意隐式转换");
//除了 NaN、null、""、undefined、0这几个,其他都是true;
console.log(Boolean(NaN));//false
console.log(Boolean(null));//false
console.log(Boolean(""));//false
console.log(Boolean(undefined));//false
console.log(Boolean(0));//false
console.log(Boolean("asd123"));//true;
console.log(Boolean(arr));
var arr2=new Array(NaN,1);
var arr3=new Array(1,NaN);
var arr4=new Array(1);
console.log(Boolean(arr2));//数组判断,
console.log(Boolean(arr3));//数组判断,
console.log(Boolean(arr4));//数组判断,都是true

console.log(!!"asd123");//true
</script>

 
效果图:

 

猜你喜欢

转载自onestopweb.iteye.com/blog/2316170