JS基础之数据类型

JS的历史


image.png
  1. 1991年,李爵士发明了万维网(WWW)
  2. 1992年,其同事发明CSS
  3. 1993年,李爵士创建W3C
  4. 1995年,网景公司(NetScape)发布一款浏览器叫Navigator(航海家),这款浏览器第一次支持脚本,而之前的只支持HTML+CSS;这个脚本语言是Branden Eich发明的,他是JS之父。这种语言看起来很像Java;但是不是Java。10天的时间发明了JS;JS发布之后,Unicode和UTF-8发明了,这也就说明了,JS的编码不是Unicode,这是一个BUG
  5. 1996年,微软(MS)发布了IE,并仿照JS发明了JScript,功能和JS完全一致,这是为了抢占市场;网景开始开源,这个开源羡慕是Firefox;IE5.5推出JS发请求;网景公司开始向ECMA申报标准。JavaScript是网景的注册商标,因此用的是ECMA Script,也就是ES。因此JavaScript的标准是ECMA Script。
  6. 2004年,Gmail利用这个发请求功能,做了网页上的程序,JS被正式认为是一个编程语言
  7. 这样就出现了前端(Front-End),以JS为生的就叫做前端,中国2010年开始出现前端,前端基本是由后端转的
  8. 前端发现JS有很多BUG,如全局变量(没有模块化),没有标准库(内置代码块少)
  9. 于是开始升级,升为ECMA Script5,之前的是ECMA Script3
  10. Rails社区使用的语言是Ruby,他们发明了Coffee Script,也就是JS改良版,这里面添加了类,箭头函数,原型链等
  11. 于是ECMA Script6出现了,新特性(https://zhuanlan.zhihu.com/p/24570791);JS成为一个现代编程语言
  12. 现在基本每年一更;
  13. 现在很多没有发布的特性就已经被使用了;很有可能浏览器先有了,再变成规范


    image.png

数据类型


七种数据类型(请背诵):number string boolean symbol undefined null object
注意没有 array 类型也没有 function 类型。

  1. number

    • 整数和小数:1 1.1 .1
    • 科学记数法:1.23e2
    • 二进制:0b11,二进制就是以0b开头的,大小写都可以
    • 八进制:011(后来 ES5 添加了 0o11 语法),0开头表示8进制
      • 存电话号码的时候一定要存字符串,否则有歧义
    • 十六进制:0x11,以0x开头的
  2. string

    • 空字符串:''
    • 多行字符串:
      • 命令行中多行字符串的实现使用+enter,这个是抄袭命令行的
      • 或者使用+也是可以的
      • image.png
      • image.png
      • 1左边的那个符号,是反引号,支持多行文字。这是ES6的新语法
      • image.png
      • 使用上面这种写法的时候,回车也算是一个字符
    • 字符串中需要转义
      • 我们用单引号表示字符串,但是万一我们想表示的字符串就是单引号呢?
      • 我们可以使用转义字符\来进行转义,告诉其不带哟偶任何特殊意义,这个\就是转义符
      • 转义符还有其他用法,如'\n'表示回车,'\t'表示制表符Tab,这三个字符的长度都是1
      • '\'就是表示一个\
  3. boolean(其实是一个人名)


    image.png
    • 乔治·布尔
      乔治·布尔是英格兰数学家和哲学家、数理逻辑学先驱。
      由于其在符号逻辑运算中的特殊贡献,很多计算机语言中将逻辑运算称为布尔运算,将其结果称为布尔值。
      1864年,布尔冒着大雨步行两英里走到讲台,身着打湿的衣服为学生们授课。不久后,他就病倒了,得了重度感冒还发高烧。其妻错误地相信疾病需要用致病因子施救,因为布尔是淋雨水而感冒的,妻子于是用桶子装水淋到他身上。结果湿气进一步加剧了他的病情。1864年,12月8日,布尔死于肺部积水。
      上面资料的来源是维基百科,请自行选择是否相信。
    • boolean 的取值
      只有两个值:true 和 false
      a && b 在 a 和 b 都为 true 时,取值为 true;否则为 false
      a || b 在 a 和 b 都为 false 时,取值为 false;否则为 true
  4. symbol(符号)
    方应杭:JS 中的 Symbol 是什么?

  5. undefined 和 null
    都表示没有值,至于 JS 为什么有两个表示「没有值」的东西,可以从 JS 之父的 twitter 中知道当时他也挺纠结的:https://twitter.com/BrendanEich/status/333008305461006336

    • (规范)如果一个变量没有被赋值,那么这个变量的值就是 undefiend
    • (习俗)如果你想表示一个还没赋值的对象,就用 null。如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var xxx 一下就行了,不用写 var xxx = undefined)
  6. object

    • object 就是上面几种基本类型(无序地)组合在一起
    • object 里面可以有 object


      image.png
    • object 的 key 一律是字符串,不存在其他类型的 key
    • object[''] 是合法的
    • object['key'] 可以写作 object.key
    • 注意 object.key 与 object[key] 不同
    • delete object['key']:删除
    • 'key' in object
    • 数组和函数都是属于object的
    • image.png
    • 对象中可以有属性指向自身
    • image.png
  7. typeof 操作符

xxx类型 string number boolean symbol undefined null object function
typeof xxx 'string' 'number' 'boolean' 'symbol' 'undefined' 'object' 'object' 'function'

注意 function 并不是一个类型

你可能感兴趣的:(JS基础之数据类型)