JS 里的数据

在整理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

你可能感兴趣的:(JS 里的数据)