javascript有以下七种数据类型:
number,string,boolean,symbol,null,undefined,object
其中,number,string,boolean,symbol,null,undefined属于原始类型(primitive values)
object属于复合类型(complex type)
1.
number(数字)
表示整数和浮点数,javascript里的整数和浮点数,统一采用64为浮点数来形式储存。
1 //1 整数
1.0 //1.0 浮点数
.1//0.1 浮点数
1.23e2 == 1.23 * 10^2 //123 科学计数法
上面是使用十进制表示,也有其他进制的表示方法
0b开头表示二进制
0o开头表示八进制
0x开头表示十六进制
不区分大小写
0b10 // 2 二进制
0o56// 46 八进制
0x5a// 90 十六进制
2.
string
表示字符串,使用双引号或单引号括起来。
"我是字符串" //我是字符串
'我是字符串' //我是字符串
如果需要在引号内部使用' 或者''需要使用反斜杠(\)进行转义转义,不然会造成歧义。除了转义引号,还可以转移其他的符号。
':单引号
":双引号
\t:制表符(Tab)
\n:换行符
\r:回车键
\:反斜杠
转义符号长度为1。
如果写代码时需要写多行字符串,可以使用以下几种形式
1)使用反斜杠(\),需要注意的是这种书写格式会让人不知道反斜杠后面有没有空格,容易造成bug,所以不推荐使用。
var a = '12345\
67890'
2)使用加号(+)连接字符串
var a= '我是'+
‘字符串’
//我是字符串
3)使用反引号(`),使用反引号会把回车和空格算上。
var a = `我是
字符串`
//我是
//字符串
var b= `我是
字符串`
//我是
// 字符串
3.
boolean
布尔有两个取值,真(true)和false(假)。
&&:或运算,只有两个值都为真,返回真
var a = 1
var b = 2
var c= 3
a>b && a>c //false
a>b && a<c //false
a<b && a<c //true
||:与运算,两个有一个为真,返回真
var a = 1
var b = 2
var c= 3
a>b || a>c //false
a>b || a<c //true
a<b || a<c //true
4.
symbol
ES6新加的一中数据类型,作用是生成一个全局唯一的值。在为对象添加新属性时,防止属性名冲突,这是出现该类型的目的。
通过symbol()来实现该数据类型。括号中可以添加对象或者字符串,不过仅仅是为了方便查看,会返回一个字符串。
var mySymbol = Symbol();
var yourSymbol = Symbol('your');
var hisSymbol = Symbol('his');
var a = {
mySymbol:'my',
yourSymbol:'your',
hisSymbol:'his',
}
a['mySymbol'] //'my'
a['yourSymbol'] //'your'
Symbol('his') == Symbol('his'); //false
Symbol() == Symbol('his'); //false
上面先声明了三个变量并赋值为Symbol(),括号里的可以看作是注释,经过实验可以发现每个Symbol()并不相等。
5.
null和undefined
两个意思基本相等,表示没有值,什么都没有。null只有一个取值null,undefined也只有一个取值undefined。
var a = null //null 人们看到null就会知道你是想写一个空对象
var b //undefined 人们看到会知道这是一个空的非对象的东西......
变量没有赋值会返回undefined。这是JavaScript的语法。
想写一个对象,但是现在还不想赋值使用null,写一个不是对象的东西,比如空string,空number等等,反正不是空对象的其他空的东西都用undefined,这是人们约定成俗的,并不是JavaScript的语法
6.
object
对象属于复合类型(complex type),是原始类型(primitive values)的组合。一个对象由多个无序的键值对组成,key叫做属性名,value叫做属性值。
{key:value,key:value,key:value,} //声明对象的语法,需要把对象赋值给变量来使用
var a = {
name:'小强',
age:18,
bachelordomDog:true,} //最后的逗号可加可不加
关于最后的逗号,ES3不支持,所以如果考虑兼容IE7以及以下,是不能加的。
在JavaScript中,属性名永远都是字符串,不过书写的时候可以省略引号。虽然会方便,但是有限制条件,就是不加引号的属性名需要遵守标识符规则,否正一律加引号。
var a = {
name:'小强',
age:18,
’1aa‘:'aaa' //属性名可以数字开头要加引号
单身狗:true, //属性名可以是中文
borther:{name:'小力',age:16,单身狗:false,} //对象中可以放对象
's s':'haha', //有空格要加引号
'':'我是空字符串' //属性名可以使用空字符串
}
对象的使用
var name = 'hahaha'
var a = {
name:'小强',
age:18,
’1aa‘:'aaa' //数字开头要加引号
单身狗:true, //可以是中文
borther:{name:'小力',age:16,单身狗:false,} //对象中可以放对象
's s':'haha', //有空格要加引号
}
a[name] //undefined 错误用法,访问的是a['hahaha']
a['name'] //'小强'
a.name //'小强' 使用点运算符,相当于a['name']
7.
delete的使用
delete可以删除对象中的属性名或者属性值
var a = {
name:'小强',
age:18,
’1aa‘:'aaa' //数字开头要加引号
单身狗:true, //可以是中文
borther:{name:'小力',age:16,单身狗:false,} //对象中可以放对象
's s':'haha', //有空格要加引号
}
delete a['name']
a.name //undefined 属性值不存在
'name' in a //false 属性名不存在
如果想保留属性名可使用undefined
a['name'] = undefined
a.name //undefined 属性值不存在
'name' in a //true 属性名还存在
8.
for...in的使用
for...in可以遍历对象
var a = {
name:'小强',
age:18,
’1aa‘:'aaa' //数字开头要加引号
单身狗:true, //可以是中文
borther:{name:'小力',age:16,单身狗:false,} //对象中可以放对象
's s':'haha', //有空格要加引号
}
for (var key in a){
console.log(key)
}
//name
//age
//1aa
//单身狗
//borther
//s s
//浏览器可能不会按顺序打印
需要注意的是如果写成
for (var key in a){
console.log(a.key)
}
这样是会出错的,因为a.key相当于a['key']而不是打印变量key。
9.
typeof的使用
typeof可以查看数据类型
var a = 'aaaaaa'
typeof a
//string
typeof有以下两个bug,是javas没设计好造成的
typeof null //'object'
function x(){}
typeof x
//'function'
不过JavaScript并没有function的数据类型......
网友评论