js不同的数据类型:
1、字符串类型(string)
例:“Volor”、“hello”等,在双引号或单引号中添加内容
2、数字类型(number)
例:1234、34567、456 等,由数字组成,数字可带小数点,也可不带;
需要注意的是,极小或极大的数字需要通过科学计数法进行书写
例:12300000 表示为 123e5 ,0.00123 表示为 123e-5
3、布尔类型(boolean)
boolean 类型只有两个值,分别为:true / false
4、对空类型(null)
可通过将变量设置为 null 来清空变量
5、未定义(undefined)
undefined 表示变量中不含值
6、标识符(symbol)
js引用数据类型
1、对象类型(object)
例:var obj={name:"小明",age:20}
2、数组类型(array)
例:var arr=[1,2,3,4]
3、函数类型(function)
例:function foo(){}
js类型转换
一、强制转换,使用 Number()
、String()
和boolean()
三个函数进行完成,手动将各个数据类型的值,转换为对应的数字
、 字符串
、布尔值
Number()
首先是 Number 数字类型的强制转换,规则如下:
// 数值进行转换:转换完之后还是它本身,值未变
Number(123456); // 返回结果是 123456
// 字符串进行转换:1、若字符串中的内容可以用数字进行表达,那么就转换为相应的数字表达
Number("12345"); // 返回的是 数字类型的 123456
// 字符串进行转换:2、若字符串中的内容无法用数字进行表达,那么将返回 NaN
Number("12sdf"); // 返回的是 NaN
// 字符串进行转换:3、空字符串,空字符串将未转换为 0
Number(""); // 返回的是 0
// 布尔类型进行转换:true转换为 1;false转换为 0
Number(true); // 1
Number(false); // 0
// 未定义进行转换:undefined 转换为NaN
Number(undefined); // NaN
// 空值进行转换:null 转换为 0
Number(null); // 0
另有一种将字符串转换为数值的方式为 parseInt
,但,parseInt
比起Number
来说要相对宽松一些,parseInt
进行类型转换时,会逐个字符进行解析,从第一个是数字的位置开始,到最后一个非数字的字符结束,中间的数字将作为转换结果;而Number
解析字符也是逐个进行解析,跟parseInt
不同的是,Number
解析的时候,一旦出现无法转换成数字的字符,那么,解析过程将立即结束,并整个转换结果就将变成NaN
;
parseInt("2345 color"); //转换结果为 2345
Number("2345 color"); //转换结果为 NaN
对象进行转换:若对象为空,或对象中是一个包裹数值的数组,则转换为对应的数字。否则转换为 NaN
Number([]); //转换结果为 0
Number([3]); //转换结果为 3
Number(["8"]); //转换结果为 8
Number({a:1}); //转换结果为 NaN
String()
String()
函数作用是将各种的数据类型转换为 string 字符串类型,转换规则如下:
//数值转换:转换为对应的字符串
String(123) // "123"
//字符串转换:转换为它本身
String("123"); //"123"
//布尔值转换:转换结果为 "true"/"false"
String(true) //"true"
String(false) //"false"
//未定义转换:undefined 转换为 "undefined"
String(undefined) //"undefined"
//空转换:转换为字符串 "null"
String(null) //"null"
对象转换:若String
方法的参数是对象,那么就返回一个类型字符串;若String
方法的参数是数组时,那么返回该数组的字符串形式
String({name:"小明"}) //"[object object]"
//当数组为空数组时,将其转换为空字符串
String([]) //""
String([1,2,3]) //"1,2,3"
//当数组中出现 null 或 undefined 时,其会被当成空字符串处理掉
String([1,null,undefined,3,5]) //"1,3,5"
boolean()
boolean
函数是可以将任意类型的值转换为布尔值的
转换规则相当简单:除了六个假值转换为 false
,其他的都会转换为true
六个假值分别为:undefined
、null
、0(无正负之分)
、NaN
、""
、false
Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean("") // false
Boolean(false) // false
自动转换
自动转换是以强制转换为基础的,当出现下面几种几种情况时,js数据会自动发生数据转换,也就是出现下面几种情况时,js数据会瞬间自动完成数据转换,用户不可见。因此这种自动转换也叫作隐式转换
1、当不同类型的数据进行运算时
···
12345+“name”; //“12345name”
//会将12345隐式转换为字符串"12345"
···
2、对不是布尔类型的数据进行布尔操作求true 或 false
时
if("world"){
console.log("hello") //因为"world"不是六个假值中的任意一个,所以"world"为 true 控制台输出为:"hello"
}
3、对不是数值类型的值使用 +
或 -
时,结果为 NaN
+{name:"小明"} //NaN
-{2,6,9,3} //NaN
自动转换为字符串
//当使用字符串去加其他类型数据时,将后者隐式转换为字符串,与前者进行拼接(注:字符串在前)
“23”+12 //"2312"
"23"+true //"23true"
"23"+{} //"23[object object]"
"23"+[] //"23"
"23"+function(){} //"23function(){}"
"23"+undefined //23undefined
"23"+null //"23null"
自动转换为数值
直接看实例:
'2'-'1' // 1
'10' * '2' // 20
true - 1 // 0
false - 1 // -1
'12' - '12' //0
'2' * [] // 0
false / '2' // 0
'asd' - 1 // NaN
null - 1 // -1
undefined - 1 // NaN