JS数据类型详解
一、布尔
Boolean()
把其他类型值转化为布尔类型
只有
0,NaN,空字符串,null,undefined
这五个类型数值为转化为false
,其余均转化为true
Boolean([]) //->true
感叹号!
!=:不等于
!:取反,先把值转化为布尔类型,然后再取反
![] //->false
两个感叹号!!
取反再取反,相当于把一个值转化成布尔类型,和Boolean()有相同的效果
二、字符串
JS中,单双引号包起来的都是字符串
常用方法:
charAt charCodeAt
substr substring slice
toUpperCase toLowerCase
indexOf lastIndexOf
split replace match
...
三、number数字
NaN
typeof NaN -> "number"
not a number不是一个数,但是属于number类型
NaN === NaN -> false, NaN和任何其他值都不相等
isNaN()
检测当前值是否是非有效数字,若不是有效数字,结果为true,反之,false
isNaN(0) // false
isNaN(NaN) // true
isNaN('12') // false 会进行类型转换
isNaN([]) // false
isNaN(false) // false
isNaN(true) // false
Number()
把其他类型值转化为number类型,转字符串的时候只要出现一个非有效数字字符串,结果都是NaN
Number('12') // 12
Number('12px') // NaN
Number(false) // 0
Number(true) // 1
Number(null) // 0
Number(undefined) // NaN
Number([]) 转引用类型的时候,会先把引用类型转化为字符串(toString),再把字符串转化为number
Number([]) // []-> "" -> 0
Number([12]) // [12] -> "12" -> 12
Number([12, 13]) // [12, 13] -> "12, 13" -> NaN
Number({name:'lulu'}) // NaN
Number({}) // NaN
parseInt()
把其他类型值转化为number,在处理字符串时跟Number()有区别,提取规则:从左到右依次查找有效数字字符串,直到遇到第一个非有效数字字符串就停止(不管后面是否还有有效数字字符串),识别不了小数点
Number('12px') // NaN
parseInt('12px') // 12
parseInt('12px13') // 12
parseInt('px12') // NaN
parseInt('12.5px') // 12
parseFloat()
在 parseInt()基础上可以识别小数点
parseInt('12.5px') // 12.5
null和undefined
null: 空,没有
undefined: 未定义,没有
对象数据类型object
var obj = {name: "javascript", age: "18"};
每个对象都是0到多组属性名(key键):属性值(value值)
组成的,即键值对,每一对键值对中间用逗号隔开属性:描述这个对象特点特征的, 属性名字符串或者数字格式,属性值可以是任意数据类型,若操作的属性名对象中没有,结果会是undefined
var obj = {name: "javascript", age: "18"};
// 获取某个属性名对应的属性值
obj.name;
obj["name"];
// 属性名是数字的时候只能用中括号形式
obj[number];
obj["number"]; // 中括号内 转化成字符串也可以
// 增加修改 属性名是唯一的,不存在就是设置新属性,存在就是修改属性值
obj.sex = "男"; // 增加
obj["age"] = 20; // 修改
// 删除
// -> 假删除 给属性值赋值null,但属性还在对象中
obj.sex = null;
// -> 真删除 把整个属性从对象中暴力移除
delete obj.sex;
函数数据类型
//=> create a function
function name(){
//=> do something
}
//=> perform th function
// 如果只创建不执行 函数就没有意义
name();
function fn(){
console.log(1+1);
}
fn; // 输出函数本身
fn(); // 执行函数
// 函数传参
function fn(a,b){
console.log(a+b);
}
fn(10,20);