JS 里的数据类型
一、JavaScript(js)的7种数据类型
1.数字/number
2.字符串/string
3.布尔/boolean
4.symbol/符号
5.null/为空
6.undefined/未定义
7.对象/object
1.数字/number
十进制
1
1.1 或者.1
1.23e2 就是1.23*10的平方
二进制(0b开头是二进制)
0b1 = 1
0b10 = 2
0b11 = 3
八进制
011 = 9
十六进制
0x11 = 17
2.字符串/string
单引号‘’‘你好’
双引号“”“你好”
‘.’或者“.”表示空字符串,空字符串长度为0,这里的.可写可不写
‘ ’或者“ ”表示空格字符串,空格字符串长度为1
字符串有个转义功能,\表示转义符
(1)表示一个单引号:Var a = ‘’’ 这样写浏览器解释回错误,要用转义符 var a = ‘\’’ 字符长度为1
(2)表示一个回车(回车在unicode字符串里是13):var n = ‘\n’ 字符长度为1
(3)表示一个tap(制表符):var t = ‘\t’ 字符长度为1
(4)表示\符号:var b = ‘\\’ 字符长度为1
多行字符串(不是字符串里有回车)
Ps:不用电脑上的enter回车,在两个字符串之间打一个\ 或 +
Var s = ‘12345 \
6789’
Var s2 = ‘12345’ +
’ 6789’ 推荐使用这个 // 无回车符号
ES6的多行字符串的写法
Var s3 = `12345
67890` //含回车符号
3.布尔/boolean
两个基本值:true/false
&&与运算 ||或运算
4.undefined 和 null
Undefined类型只有一个值undefined
Null类型只有一个null
undefined 和 null的区别?
(1)如果变量没有赋值,就用undefined
(2)如果想有一个对象object,现在不考虑给它一个值,就用null,如:var obj = null
(3)如果有一个非对象,不想给它赋值,就将它的值初始化为undefined
一般来说:null表示空对象,undefined表示空、非对象,例如:空number/空string
如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var xxx 一下就行了,不用写 var xxx = undefined)
5.object/对象
复杂类型,由以上的基本类型(无序的组合)组成
例如:声明3个基本类型变量
Var name = ‘frank’
Var age = 18
Var qender = ‘male’
可以用哈希/数组的结构组成一个对象object
Var person = {
‘name’ = ‘frank’,
‘age’ = 18,
‘qender’ = ‘male’
}
object语法:
1.声明一个变量容纳对象var person
2.以逗号,隔开
Var person = {
‘name’ = ‘frank’,
‘age’ = 18,
‘qender’ = ‘male’
}
读取里面的内容:person[‘name’] 这里的单引号不能省略。person[‘name’]可以写作person.name
Object对象里的key如果加了单引号‘’就可以随便命名,若不加单引号‘’则需遵循标识符的命名规则。
标识符就是变量名,变量名首字母不能是数字、中间不能有空格。变量名可以使中文。
object注意点:
(1)object 里面可以有 object
var person = {
name: 'Frank',
'child': {
name: 'Jack'
}, // 最后这个逗号可有可无
}
(2)object 的 key 一律是字符串,不存在其他类型的 key
(3)object[''] 是合法的
(4)object['key'] 可以写作 object.key
(5)注意 object.key 与 object[key] 不同
(6)delete object['key'] 表示object对象里的key和value都删除了
(7)var key=undefined 表示只删除了value,没有删除key
(7)'key' in object
二、typeof操作符——查看该数据的数据类型
(1)number —— typeof number //"number"
(2)string —— typeof string //"string"
(3)boolean —— typeof boolean //"boolean"
(4)symbol —— typeof symbol //"symbol"
(5)undefined —— typeof undefined //"undefined"
(6)null —— typeof null //"object"
(7) object —— typeof object //"object"
(8)function —— typeof function //"function"
注意:function 并不是一个数据类型
三、补充理解
1.JS字符串的理解
(1)JavaScript引擎不能自动识别编号大于0xFFFF的Unicode字符。
(2)JavaScript允许在程序中使用Unicode编号表示字符,写成\uxxxx的形式。
(3)'\u00A9' 表示 "©"
(4)var f\u006F\u006F 是合法的
2.Base64的理解
(1)全局函数 btoa() 能将字符串转为Base64编码
(2)全局函数 atob() 能将 Base64编码转为原来的编码
(3)要将非ASCII码字符转为Base64编码,必须中间插入一个转码环节
(4) Base64是一种基于64个可打印字符来表示二进制数据的表示方法。
3.关于object对象的说法
(1)简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
(2)var o1 = {}; 可以创建一个对象
(3)var o2 = new Object(); 可以创建一个对象
(4)var o3 = Object.create(Object.prototype); 可以创建一个对象
4.var name = 'x'
var obj = {
name: 'frank'
}
obj.name 的值为'frank'
obj['name'] 的值为'frank'
obj[name] 的值为undefined,,obj[name] 相当于obj['frank']
5.我想知道变量 a 是否已经声明过(值为 undefined 不代表没有声明过),应该用if ('a' in window) { ... }
6.我想知道一个对象有哪些 key,应该用的 API是:Object.keys(obj);
7.关于 for…in 循环
(1) for...in 循环用来遍历对象
(2) for...in 循环会跳过不可遍历的 key
(3) for…in 循环不仅遍历对象自身的属性,还遍历继承的属性
8.关于with语句
(1)with语句的一个很大的弊病就是绑定对象不明确。
(2) 建议尽量不要使用with语句。
(3) 在某些特殊需求下,with 还是有用的