JavaScript中的数据类型
最近在看阮一峰老师的博客,其中有较全面地介绍了JavaScript的数据类型。
关于数据类型中的一些基础知识阮老师已经讲得很清楚,遇到不清楚的地方我们可以去MDN查看文档,现在写这篇博客的目的主要是梳理一下知识以及记录一些容易出错的点,希望能帮到更多的朋友。
JavaScript中数据类型:
-
基本类型/简单类型
number
数字string
字符串boolean
布尔值symbol
symbolundefined
undefinednull
null
-
复杂类型
object
对象
number
//JavaScript中的number,都能如下表示
//整数
var a = 1 //1
// 小数
var a = 0.1 //0.1
var a = .1 //.1
// 科学计数法
var a = 1.23e2 //123
// 二进制
var a = 0b11 //3
// 八进制
var a = 011 //9
// 十六进制
var a = 0x11 //17
string
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。双引号字符串内部使用双引号,也是如此。
空字符串
// 这样做是可以的
var a = ''
// 注意区分空字符串和空格字符串
var a = ''
var b = ' '
a.length //0
b.length //1
多行字符串
// 无回车符号
var s = '12345' +
'67890' //1234567890
// 含回车符号
var s = `12345
67890`
/*
12345
67890
*/
还有一种方法:
var s = '12345
678910'
// 如果转义符后无空格或者回车
s //12345 678910
// 如果转义符后不小心加了空格或者回车,则会出现报错
var s = '12345
678910'
s //Uncaught SyntaxError: Invalid or unexpected token
所以这种方法是不推荐的,因为误操作几率高。
Boolean
var a = true //true
var b = false //false
// a && b 在a和b都为true的时候为true,否则为false
a&&b //false
// a || b 在a和b都为false的时候为false,否则为true
a||b //false
symbol
Symbol()函数会返回symbol类型的值,该类型具有静态属性和静态方法。它的静态属性会暴露几个内建的成员对象;它的静态方法会暴露全局的symbol注册,且类似于内建对象类,但作为构造函数来说它并不完整,因为它不支持语法:"new Symbol()"。
每个从Symbol()返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。更进一步的解析见—— glossary entry for Symbol。
详见MDN文档
总结说,就是:Symbol 生成一个全局唯一的值。
undefined
+ null
undefined 属性用于存放 JavaScript 的 undefined 值。
null与undefined都可以表示“没有”,含义非常相似。
undefined 和 null 的区别:
// 如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用 undefined
var a
var b = undefined
// 以上两个值都是undefined
// 如果你想表示一个还没赋值的对象,就用 null
var person = null
还需要注意的是,当我们用typeof来检测数据的类型时,undefined和null的结果是不一样的:
typeof null // "object" (因为一些以前的原因而不是'null')
typeof undefined // "undefined"
null === undefined // false
null == undefined // true
object
对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型。
什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
object就是上面几种j基本类型(无序地)组合在一起的复杂类型。
// 创建一个对象
var person = {
name: "Peter",
age: 18,
pocket: {
money: 200,
}
}
//object里是可以包含object的
//object的key一律是字符串,不存在其他类型的key
//object['']是合法的
//object['key']可以写作object.key
person.name //Peter
person['name'] //Peter
//object.key和object[key]不同
person.name //Peter
person[name] //undefined
//删除一个key
delete person["name"] //会返回一个boolean值,true表示删除成功
person //{age: 18,pocket: {money: 200,}}
//用in操作符来确定object内是否含有某个key
if ("age" in person) {
console.log(person['age'])
} //18
//用for in 来遍历对象的属性
for (key in person) {
console.log(key + person[key])
}
检测数据类型
当我们要判断一个数据类型的时候可以用typeof
操作符:
typeof "string" //"string"
typeof 17 //"number"
typeof Symbol() //'symbol'
typeof true //"boolean"
typeof undefined //"undefined"
typeof null //"object"
typeof object //"object"
typeof function(){} //"function"
//要注意null和function的类型哦
关于JavaScript的数据结构的总结就到这里,平时遇到问题应该多看文档或者善用google,才能进步得更快。