JS中一共有7中数据类型分别是:string(字符串),number(数字),boolean(布尔),null,undefined,object(对象)以及ES6新增的symbol(符号)。
基础数据类6种:string,number,boolean,null,undefined,symbol(这6种数据类型不能添加属性)
引用数据类型1中:object
JS中有三种方法可以确实一个值是什么数据类型
typeof
instanceof
Object.prototypeof.toString
需要注意:
typeof在检测函数的时候,会返回function
typeof在检测null,[ ]数组,{ }对象,window 的时候 ,会返回object
所以typeof返回的值有7个分别是:string,number,boolean,function,object ,symbol,undefined与7种数据类型相比,null变为的function,其余都是相同的
因为typeof检测数组和对象都会返回object,所以无法检验。故检测数组和对象应用instanceof 来检验,instanceof可以详细的区别数组和对象
delete命令用于删除对象的属性,删除成功后返回true。
string(字符串)
string的最大长度为16位
object(对象)
对象的所以键名都是字符串,可以不加引号,但必须满足标识符的命名规范,如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。
// 报错
var obj = {
1p: 'Hello World'
};
// 不报错
var obj = {
'1p': 'Hello World',
'h w': 'Hello World',
'p+q': 'Hello World'
};
null
null作为引用类型的变量的初始值
undefined作为基本数据类型的变量的初始值
console.log(null==undefined);//true
console.log(null===undefined);//false
undefined
undefined型只有一个值,即特殊的undefined。使用var声明变量但未对其加以初始化时,这个变量的值就就是undefined。
number
任何涉及与NaN的操作都会返回NaN,JS有一个isNaN()函数,可以判断接收的参数是否为NaN,或者参数转化为数字后是否为NaN
console.log(0/0);//NaN,0/0返回NaN
console.log(isNaN(undefined)); //true,返回NaN
console.log(isNaN(null)); //false,被转为数字0
Symbol
ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。
Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。
注意,Symbol函数前不能使用new命令,否则会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象。也就是说,由于 Symbol 值不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型。