7种数据类型:
1、数字 number (js内部,所有数字都是64位浮点数存储,就算是整数。)
十进制:1 1.1 .1 1.23e2=123
二进制:0b11=3
八进制:011=9
【坑】注意:电话号码不能用数字来存
十六进制:0x11=17
【坑】NaN也是number类型,代表 非数字
2、字符串 string
JavaScript引擎不能自动识别编号大于0xFFFF的Unicode字符。
JS允许在程序中使用Unicode编号表示字符,写成uxxxx的形式。
'u00A9' 表示 "©"。
var fu006Fu006F 是合法的。
全局函数 btoa() 能将字符串转为Base64编码,全局函数 atob() 能将 Base64编码转为原来的编码。要将非ASCII码字符转为Base64编码,必须中间插入一个转码环节。
Base64是一种基于64个可打印字符来表示二进制数据的表示方法。
'你好' "nihao"
'' ""(空字符串) 长度为0
' ' " "(空格字符串) 长度为1
转义: 反斜杠转义符。n=回车 t=制表符 length都是1【坑】
转义转义符
多行字符串:
var s = "12345
67890"
var s = "12345"+
"67890" (更好)
var s = "12345 (有无数个空格看不见)
67890“(【坑】报错,因为空格被转义,缺少闭合)
ES6:
var s = `12345
67890`(【坑】length包括回车,11个长度;也包括5后面和6前面的一切空格)
3、布尔 boolean
布尔是个人,发明了逻辑学,数学家
只有两个词:true(真)、false(假)
var a = true
if(a){
xxxxx(会执行)
}
&&与 ||或 !非
4、符号symbol
ES6新增,以后再说
5、null类型:值只有一种null
6、undefined类型:值只有一种undefined
js里表示没有值,可以用null也可以用undefined,有两个的原因是js之父的bug
【坑】细微的区别:
·如果一个变量没有赋值,就是undefined,不是null(语法)
·如果想有一个对象,但是现在不想赋值,就给一个null(惯例)
·如果想有一个非对象,但是现在不想赋值,就给一个undefined,或者直接只声明即可(惯例)
7、对象 object,前六种叫基本类型,对象是复杂类型,由简单类型组成
哈希表来表示。
var name = 'frank'
var age = 18
var gender = 'male'
var person =
{
name : 'frank',
age : 18,
gender : 'male'
married : true
xiaosan : undefined
children : null
childred2:{name:'xxxx',age:555}
'' : 'frank'
9a : 'xxxxx' //【坑】不合法,因为如果key不加引号的话,需要按照变量名的规则来命名
'9a' : 'xxxxx'//合法,但只能用person['9a']调用,不能用person.9a
9 a : 'xxxxx' //【坑】不合法,key不加引号不能有空格
‘9 a’ : 'xxxxx' //合法,但只能用person['9 a']调用
}
person['name'] //frank
delete person['name']
'name' in person
person['name'] = undefined //这样只能清空value,不能清空key
遍历对象中的全部key:
var person = {'name':'frank','age':18}
for(var key in person){
console.log(person[key]) //【坑】不能用person.key 因为key用.的语法时,是字符串,等价于person['key']
}
【坑】基本类型里,没有array、没有function,这俩都是对象。
如何知道变量类型:
typeof XX 返回的都是字符串
【坑】有2个特殊:
typeof null //返回obj
typeof function //返回function