11前端成长日记-JS里的数据类型

199 阅读3分钟

JavaScript里一共有7种数据类型:

1. number  //数字
2. string  //字符串
3. boolean //布尔
4. null //空
5. undefined //未定义
6. symbol //符号
7. object //对象

其中 object 属于 复杂类型 ; 其他的都属于 基本类型

number

我们常见的阿拉伯数字就是number(比如3和3.14)

NaN

NaN表示一个非数字,比如数字和字符串的运算的结果就是 NaN ,NaN 不等于任何值包括它自己

8 - 'x' //NaN
NaN === NaN //false

string

我们常见的文本和包在引号里的内容都属于字符串(如 HelloWorld;'123' )

字符串只能写在一行不然会报错,如果想要分成多行就要想其他方法:

  1. 用“\”,这种方法有个bug当“\”后面有空格时就会报错
var a = 'a\
b\
c'
  1. 用 "+"
var a = 'a'+
'b'+
'c'
  1. 用'``' ,这是ES6扩展的写法
var a = `a
b
c`

“\” 在字字符串中还有转译的作用,可以用来表示一些特殊的字符

1. \0 :null(\u0000)
2. \b :后退键(\u0008)
3. \f :换页符(\u000C)
4. \n :换行符(\u000A)
5. \r :回车键(\u000D)
6. \t :制表符(\u0009)
7. \v :垂直制表符(\u000B)
8. \' :单引号(\u0027)
9. \" :双引号(\u0022)
10. \\ :反斜杠(\u005C)

boolean

布尔的值还有两个 true 和 false

布尔与 && || 一起用时:

&& //与
|| //或

a && b 只有a和b都为真时a&&b才为真,否则为假
a || b a和b中有一个为真a||b就为真,当a和b都为假时才为假

null

用来定义变量的值为空

undefined

undefined 通常用表示变量的值未定义,它和 null 的含义很相似。他们也有不同之处

  1. null 通过 typeof 得到的类型是 object,而 undefined 得到的就是 undefined
  2. null 会被转换为 0 ,而 undefiend 不会
typeof null //object
typeof undefined //undefiend
null + 8 //8
undefined + 8 //NaN

object

对象是JavaScript语言中核心的概念,也是最重要的数据类型。 对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

对象的创建方法

1. var obj = {}
2. var obj = new Object{}
3. var obj = Object.create(Object.prototype)

对象中键名都是字符串,如果键名是数字会被转换为字符串,键名的第一个字符如果是字符或包含运算符号和空格就必须用引号包住,不然会报错

var obj = {
    '3+3': 'A',
    1e2: true,
    '6': 'B'
}

obj['3+3'] // 'A'
obj[3+3] //'B
obj[1e2] //true
obj[100]//true

delete

delete命令可以删除对象里的属性

var person = {
    'name': '张三',
    'age': '18',
    'gender': 'male'
}

person.name //张三
person['name'] //张三

delete person['name'] //删除name
person['name'] = undefined //删除张三

//遍历对象
for(var key in person){
    console.log(key)
}

in运算符

in运算符可以用来检测对象里是否包含某个键名,和检测是否声明变量

var obj = {
    'A': '1',
    'B': '2',
    'C': '3'
}
'A' in obj //true 
'D' in obj //false 
'obj' in window //true
'obj2' in window //false

for..in循环

for..in 循环可以遍历对象

var person = {
    'name': '张三',
    'age': '18',
    'gender': 'male'
}
//遍历对象
for(var key in person){
    console.log(key)
}
//name
//age
//gender