JS中的七种数据类型
1、number 2.string 3.boolean 4.symbol 5.null 6.undefined 7.object
注意:没有 array 类型也没有 function 类型。
number(数字类型)
var y= 1 // 整数
var y= 1.1 // 小数
var y= 1.23e2 // 科学计数法
var y=0b11 // 二进制
var y=011 // 八进制(后来 ES5 添加了 0o11 语法)
var y=0x11 //十六进制
注意:以0b开头的表示二进制,以0开头的表示八进制,以0x开头表示十六进制
string(字符串类型)
var y='你好' //中文字符串
var y="你好" //中文字符串
var y='abc' //英文字符串
var y='1' //数字字符串
var y=' ' //空字符串,length=0
var y=' ' //空格字符串,length=1
1、字符串中转义符\的应用:
var x='\' //转义符,一个整体
var x='\n' //表示回车键,length=1
var x='\t' //表示Tab键,length=1
var x='\\' //表示斜杠\,length=1
2、多行字符串
var y='12345 \
67890' //在换行的地方加上一道斜杠,不然表示错误(方法1)
var y2='12345 '+'67890' //(方法2)
var y3=`12345
6789` //ES6增加表达方法,利用反引号,包括回车在内的长度:length=10(方法3)
注释:方法2是最佳写法,如使用方法1斜杠后面不能是空格符号,否则会报错。
boolean(布尔类型)
布尔类型值只有true和false;
其中false出现情况只有六种分别是0、null、false、unfined、NaN、" "或' '(空字符串)
其他情况均为true值,如:空数组,空对象、负值、正值等。
布尔数据类型与运算符&&(与),||(或)的结合使用:a&&b,a||b
null和undefined类型
两者都表示没有值,含义相似。
两者的区别:
(规范)如果一个变量没有被赋值,那么这个变量的值就是 undefiend
(习俗)如果你想表示一个还没赋值的对象,就用 null。如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var xxx 一下就行了,不用写 var xxx = undefined)
object(对象类型)
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命令delete用于删除对象的属性,删除成功后返回true。用in来验证是否完成对象中数据类型的删除。如果包含就返回true,否则返回false。
注意:第一种情况:delete对象中的'name',再去访问person['name'],显示是undefined(无value);
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 'sss'//string类型
typeof null //object对象(特例)
typeof function //function函数(特例)
注意:null的typeof不一样,只是一个bug。 function 并不是一个类型,只有声明函数的时候会出现。