JS的7大数据类型
1、number 2、string 3、boolean
4、symbol 5、null 6、undefined
7、object
注意:JS是没有array、function这两种类型,这两种都是属于object类型的。
一、number数据类型(数字类型)
var x=1 //整数
var x=1.1 //小数
var x=1.23e2 //科学记数法 1.23e2=1.23*10^2
var x=0b11 //二进制
var x=011 //八进制 (后来ES5添加了0o11语法)
var x=0x11 //十六进制
注意:上述提到均为number的数据类型,其中以0b开头的表示二进制,以0开头的表示八进制,以0x开头表示十六进制
二、string数据类型(字符串类型)
var x='你好' //中文字符串
var y="你好" //中文字符串
var x='abc' //英文字符串
var x='1' //数字字符串
var x='' //空字符串,length=0
var x=' ' //空格字符串,length=1
注释:字符串必须要用单引号或双引号括起来,如数字1
和数字'1'
,前者没有单引号属于number
类型,后者添加单引号属于string
类型。
1、字符串中转义符\
的应用:
var x='\' //转义符,一个整体
var x='\n' //表示回车键,length=1
var x='\t' //表示Tab键,length=1
var x='\\' //表示斜杠\,length=1
2、多行字符串几种表达方法:
var x='12345 \
67890' //在换行的地方加上一道斜杠,不然表示错误(方法1)
var x2='12345 '+'67890' //(方法2)
var x3=`12345
6789` //ES6增加表达方法,利用反引号,包括回车在内的长度:length=10(方法3)
注释:方法2比方法1使用效果更佳,如使用方法1斜杠后面如果多出一个空格符号,就极容易导致调试出现bug
三、boolean数据类型(布尔类型)
布尔类型值只有true
和false
;
其中false
出现情况只有五种分别是0
、null
、unfined
、NaN
、''
、""
;
其他情况均为true
值,如:空数组,空对象、负值、正值等。
var a=true; //如果a为真,则执行if语句
var a=false; //如果a为假,则不执行if语句
if(a){console.log(a)} //打印出a值
布尔数据类型与运算符&&(与),||(或)的结合使用:a&&b,a||b
四、null和undefined数据类型
其中null
数据类型只有一个值null
,undefined
数据类型也只有一个值undefined
,两者皆表示什么都没有,这是JS发展过程中存在一个历史bug。
两种最大区别如下:
(1)变量没有进行赋值-----用undefined
var a //undefined
(2)有一个对象object
,现在不想给值-----用null
var obj=null
注释:只要不是对象,目前不想给值情况,推荐使用undefined
五、object数据类型(对象类型)
简述一下对象:如一个人有姓名,年龄,性别等特性,这些特性都是能体现在同一个人身上,而这个人则可以称之为对象,这个对象包含相关所有特性。
var person={
'name':'fei' //string类型
'age':18 //number类型
'gende':'male' //string类型
}
由上述例子看出,对象是复杂类型,它是由简单数据类型组成,当我们要读取对象里面数据时,可以使用person['name']
,注意括号里面的单引号不能省略。
var name='fei' //undefined 全局变量
var person={
'name':'fei' //string类型
'age':18 //number类型
'gende':'male' //string类型
}
如使用person[name]
没有单引号,这个时候实际访问的person['fei']
打印出来的就是undefined
。
var person={
'name':'fei' ;
'age':28 ;
'gende':'male' ;
'children':{'name':'qin','age':5} //对象中包括对象
}
对象中的'name'
命名如果符合标识符命名规则则访问对象中name
内容可以由person['name']
改成person.name
六、delete、in、forin和typeof用法
1、delete
可以删除对象中的数据类型,这个时候可以in
来验证是否完成对象中数据类型的删除。
(1)
delete
对象中的'name'
,再去访问person['name']
,显示是undefined
(无value);(2)
delete
对象中的'name'
,再去验证'name' in person
,显示是false
(无key)注意;如果我们没有用
delete
删除对象中的'name'
,而是用person['name']=undefined
这种情况只是把value
清空了,但是key
还是存在的。
2、for....in
用来遍历对象
打印出来的
name
和age
顺序是随机的,如果改成console.log(person.key)
是打印不出任何东西,里面等价于字符串key
,而key
是变量,可以改成(person[key])
, 如果要同时打印key
和value
,应改(key,person[key])
。
3、typeof
求一个变量是什么样的数据类型
typeof 1 //number类型
typeof 'fei'//string类型
typeof null //object对象(特例)
typeof function //function函数(特例)
对于typeof
返回类型只有上述两个特例,其他均返回对应的数据类型。