在整理JS的数据前,先把JS的一些知识了解。
JavaScript其实叫ECMAScript,因为网景公司防止微软一家独大,就想ECMA组织申请标准来抵抗微软,而JavaScript以被注册为商标,为避嫌和区别,就叫做ECMAScript。
JS的缺点
- 全局变量(没有模块化)
- 标准库(内置代码少)
直到ECMAScript6,JS才是是现代编程语言,es6是2015年发布的,es7是2016发布的,并且保持着JS每年一更的速度。
JS是集大家之所长所创建出来的,而且JS之父 曾说过:原创之处并不优秀,优秀之处并非原创。
JS的七种数据类型
- number(数字)
- string(字符串)
- Boolean(布尔)
- Symbol(符号)
- null(null)
- undefined(undefined)
- Object(对象)
JS一共有七种数据类型,所有我们常常听说的 一切皆对象 是错的,因为还有其他六种数据类型
number
二进制 0b1 0b10 0b11(以0b开头)
八进制 011 0开头的容易出bug
十六进制 0x11 (0x开头)
string
'' 和 ' ' 空字符串和和空格字符串长度分别是0和1
显示符号需要转义 \ ,其中 '单引号 \n回车 \t Tab(制表符) 他们三个长度都是1,而反斜杠自身\ 符号要 '\'来转义
引申
多行字符串怎么换行,我们可以用转义回车的方法,下面实例
1.
var s = '12345\
67890'
2.
var s = '12345' +
'67890'
上面两种方法收可以实现换行字符串,但是第一种容易出bug,如果6789数组前有空格并且你检测不出来,那么这个就是一个坑了,不推荐的语法,第二章是用ES6 的反引号 `,不会出现任何的bug,是比较好的语法。
boolean
&&(与运算) 两个都为真才是真
||(或运算) 两个都为假才是假
null
就一个值null
undefined
就一个值undefined
- 变量没有值——undefined
- 有一个对象object,现在不想给值 null
有一个非对象,不想给值 undefined
前端的一般惯例:null表示空对象,undefined表示空非对象
object
object是哈希表key:value的形式,前面几种类型是基本类型,object是复杂类型(由前面几种的简单类型组成)
var person = {
name:'frank',
age:18
}
persion['name'] //name的单引号不能省
persion[name] //报错
//引申
var obj = {9a='frank’} //报错
var obj = {'9a'='frank'} //可以这种命名方式
如果不加引号,就遵守标识符的规则,当然person['name]在符合标识符的情况下 可以改写成person.name
delete person['name'] //可把name删掉了
person.name //undefined
'name' in person //false
var person = {
name:'frank',
age:18
}
for( var key in person){
console.log(key)
} //for-in循环把name和age打出来了
for( var key in person){
console.log(person[key])
} //for-in循环把frank和18打出来了
类型检测
typeof 是检测数据的类型的,但是typeof检测会有两个历史bug
- typeof null //返回的是object ,bug1
- function fn(){} typeof fn //'function' , 而function不在七种之内 ,bug2