工作生活

JS数据类型详解

2019-07-04  本文已影响0人  没了提心吊胆的稗子

一、布尔

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);
上一篇 下一篇

猜你喜欢

热点阅读