JS中一共有七大数据类型
2. 字符串(string)
字符串也可以叫做字符数组
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
空字符串与空格字符串
空字符串 没有字符,长度为0
空格字符串 只有一个空格的字符串,空格也是一个字符,所以长度为1多行字符串(3种) ,ES6新语法
var s='1234\ //使用"\"换行 5677' s "12345677" //输出还是一行 var s='1234'+ //使用"+"连接字符串 '5677' s "12345677" //输出还是一行 //ES6新语法 var s=`1234 //使用"`" 换行 5678` s "1234 //输出为两行,length为9,换行符也为一个字符 5678" //使用转义符 var s='1234\n5678' //"\n"表示换行符 s "1234 //输出为两行 5678"
转义
反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。
- \0 : null
- \b : 后退键
- \f : 换页符
- \n : 换行符
- \r : 回车键
- \t : 制表符
- \v : 垂直制表符
- ' : 单引号
- \ : 反斜杠
字符串与数组
字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)
var s = "hello" s[0] // 'h' s[1] // 'e' s[4] // 'o' s[-1] // undefined
字符串是不可变的数据类型,不可以通过此方法改变字符串
var s = "hello"
delete s[0]
s // 'hello'
s[0] = "G"
s// 'hello'
3. 布尔(boolean)
只有true 和 false 两个值,用于条件判断
4. 符号(symbol) ES6新增
5. unidefine 只有一个值==> undefined
6. null 只有一个值==> null
undefined 与 null 都表示什么也没有
undefined 与 null 的区别
- 一个变量被声明而没有赋值,则返回
undefined
- 一个非空对象,现在不想给值,
var xxx=undefined
==> 空非对象- 一个对象,不想给值,
var obj=null
==> 空对象
7. 对象(object)
简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
数组和方法也是对象
var obj = {a:1,b:2}
如果键名是数字,会自动转为字符串,如果不加引号,会按照标识符规则,不符合就报错
键名又称为属性,值可以为任意数据类型
对象的引用
如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量。
var o1 = {} var o2 = o1 o1.a = 1 o2.a //1 o1改变,也会影响到o2 o2.b = 2 o1.b //2 o2改变,也会影响到o1 o1 = 1 //取消o1对原对象的引用 o2 // {a:1,b:2} //o2不变
对属性的读取
var obj = {'name':'xiaoyu'} obj['name'] // 'xiaoyu' obj.name // 'xiaoyu' <==> obj['name'] var key = 'name' obj.key //error! obj['key'],这个对象没有key这个属性
对象有哪些属性
var obj = {'name':'xiaoyu','age':'18'} Object.keys(obj) //['name','age']
对象的遍历
for...in
循环用来遍历一个对象的全部属性。
它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性。
它不仅遍历对象自身的属性,还遍历继承的属性。
var obj = {'name':'xiaoyu','age':'18'}
for(var attr in obj){
console.log(attr+'==>'+obj[attr]) // name==>xiaoyu age==>18
}
其他
typeof 查看数据类型,两个bug,一个特殊的name
var num = 1
typeof num //number
//bug1
function f(){]
typeof f //function js没function这个数据类型
//bug2
var a = null
typeof a //object
//特殊的name ==> window.name 会将值通过toString()方法转为字符串
var name = [1,2,4]
typeof name // string
name // '1,2,4'