【复习计划——JS基础】数据类型

JS的数据类型
基本类型:number、string、boolean
复合类型:object(可分为侠义的object、array、function)
特殊类型:null、undefined
es6:Symbol

如何确定一个变量是什么类型?
1.typeof 返回一个值的数据类型
str ------> string
num ------> number
boolean ------> boolean
function ------> function
undefined ------> undefined
object、array、null -------> object (无法区分)
2.instanceof 返回true/false
用来验证一个对象是否为指定构造函数的实例
可以区分object和array

一、undefined和null
undefined:已声明,但未赋值
null:已声明,也已赋值,只是值为null

二、boolean
undefined、null、false、0、NaN、“”/‘’ 这六个转换为布尔值是false,其他均为true,包括空对象{}、空数组[]等等。

三、number
特殊值:+0、-0、NaN
大部分时候+0和-0都是相同的,都是0
特殊情况:

+0 === -0 //true
(1/+0) === (1/-0) //false
0/0 //NaN
NaN === NaN //false
[NaN].indexOf(NaN) //false,indexOf严格遵守三等运算符

parseInt(str,进制数)
一般用来将字符串转换为数值,第二个参数默认为十进制(必须在2到36之间)
从前往后解析,遇到字符串无法解析即停止

parseInt('123') //123
parseInt('123x123') //123
parseInt('0x54') //84,遇到0x/0X开头的会转换为16进制数
parseInt('0X54') //84
parseInt('012') //12
parseInt('x') //NaN
parseInt(15,2) //1,5对于二进制来说是没有意义的

parseFloat()
会将空字符串转换为NaN
isNaN() 判断一个值是否为NaN
只对数值有效,如果传入其他值,会先转为数值,再进行判断
PS:结果为true不一定这个值就是NaN,也可能是字符串、数组或者对象,所以使用之前最好判断一下数据类型

isNaN('x') //true
isNaN([1,2]) //true
isNaN({'name'}) //true

最好的办法:

function isNaN(value){
	return value != value
}

五、object

  • Object.keys(obj) 查看对象的所有属性
  • delete obj.属性 删除对象的属性(删除不存在的属性,不会报错,还是返回true,Object.defineProperty()定义的对象属性属性不能被delete删除
  • in运算符
    键名 in obj 返回boolean值,但是无法识别是自身的属性还是继承的属性
  • for … in (会自动跳过不可遍历的属性,而且还会遍历继承的属性)
for(var i in obj){
  console.log("键名:"+i+",键值:"+obj[i])
}

六、function
声明function的常用方法:

function fun(){
  ...
}
var fun = function(){
  ...
}

七、Array

var arr = [1,,3]
var arr2 = [a,undefined,3]
  • 数组里面的空值和undefined是不同的
    forEach、for…in、Object.keys会跳过空位,但是不会跳过undefined
  • 数组 的length属性是动态的,会随成员的变化而变化

你可能感兴趣的:(JS基础)