前言:JS必须死记的七种数据类型
- string
- number
- boolean
- null
- undefined
- symbol(比较特殊,先不做讨论)
- object
一、string-字符串
1、定义:字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
2、注意点:
- 单引号:由于 HTML 语言的属性值使用双引号,所以很多项目约定 JavaScript 语言的字符串只使用单引号
- 换行(容易错的点):以下有三种换行方式,只有 '+' 方式是最好的。
//方式一
var str1 = '12345
67890'
很容易坑人!!!,注意,反斜杠的后面必须是换行符,而不能有其他字符(比如空格),否则会报错。
//方式二
var str2 = '123' +
'456' +
'7890'
最优!,不容易出错,别人也容易看懂。
//最坑人的方式,在后面打一堆空格
var str3 = '12345
67890'
出现报错,但是谁能知道你后面打了空格啊!! 就很容易坑人!
3、转义
反斜杠()在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。
0 :null(u0000)
b :后退键(u0008)
f :换页符(u000C)
n :换行符(u000A)
r :回车键(u000D)
t :制表符(u0009)
v :垂直制表符(u000B)
' :单引号(u0027)
" :双引号(u0022)
:反斜杠(u005C)
二、number
需要记住的注意点:
- NaN:
NaN
是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。
//例如:
0 / 0 // NaN
5 - 'x' // NaN
NaN的运算规则:
(1)NaN
不等于任何值,包括它本身
(2)NaN
在布尔运算时被当作false
Boolean(NaN) // false
(3)NaN
不是独立的数据类型,而是一个特殊数值,它的数据类型依然属于Number
,使用typeof
运算符可以看得很清楚。
2、与数值相关的全局方法
(1)parseInt()两个用法:将字符串转为整数、进制转换。
parseInt('123') // 123
parseInt(' 81') // 81会自动去除空格
(2)parseFloat()方法用于将一个字符串转为浮点数。
(3)isNaN()方法可以用来判断一个值是否为NaN
三、null, undefined 和布尔值
1、关于null和undefined
null
与undefined
都可以表示“没有”,含义非常相似。将一个变量赋值为undefined
或null
,老实说,语法效果几乎没区别。
有一道面试题可能会问:
null和undefined有什么区别?
答:(1)null和undefined都表示“没有”的意思。当变量没有赋值时,那就是undefined;当一个对象现在还没有赋值,推荐给一个null作为作为值;总结来说就是,null一般用来表示一个空对象,undefined用来表示’空的非对象‘,例如空string、空number
(2)转为数值时,null是0,undefined是NaN
注意:这其实来源于JS之父的BUG,null
是一个表示“空”的对象,转为数值时为0
;undefined
是一个表示"此处无定义"的原始值,转为数值时为NaN
。
四、object-对象
对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型。
什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
1、键名:对象的所有键名都是字符串(ES6 又引入了 Symbol 值也可以作为键名),所以键名加不加引号都可以。以下两种情况都可
var obj = {
name: 'cjw',
age: '26'
};
var obj = {
'name': 'cjw',
'age': '26'
};
注意:如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。
// 报错
var obj = {
1p: 'Hello World'
};
// 不报错
var obj = {
'1p': 'Hello World',
'h w': 'Hello World',
'p+q': 'Hello World'
};
2、(重要!!)键名-属性-方法(键值为函数)
对象的每一个键名又叫做“属性”(property),它的“键值”可以是任何数据类型
如果一个属性的值为函数,通常把这个属性称为“方法”,它可以像函数那样调用。
综上所述: 键名就是'属性';当属性值是函数 '属性’=== '方法'
3、属性的操作
(1)属性读取:点运算符obj.name、方括号运算符obj['name']
var obj = {
p: 'Hello World'
};
obj.p // "Hello World"、点运算符不用加引号
obj['p'] // "Hello World" 方括号运算符必须加引号!!!!
请注意,如果使用方括号运算符,键名必须放在引号里面,否则会被当作变量处理。
var foo = 'bar';
var obj = {
foo: 1,
bar: 2
};
obj.foo // 1
obj[foo] // 2
请注意,数值键名不能使用点运算符(因为会被当成小数点),只能使用方括号运算符。
(2)属性赋值:点运算符、方括号运算符用来给属性赋值
var obj = {};
obj.name = 'cjw';
obj['age'] = 26;
(3) 属性的查看-Object.keys
方法
var obj = {
age: 26,
name: 'cjw'
};
Object.keys(obj);
// ['name', 'age']