美文网首页
2018-11-20红宝书1-3章总结

2018-11-20红宝书1-3章总结

作者: _CCoder | 来源:发表于2018-11-21 09:44 被阅读1次

第一章

  • javascript 由下列三个部分组成
    1. ECMAScript ,语言核心
    2. DOM(文档对象模型)
    3. BOM(浏览器对象模型)

第二章

  • <script>标签属性

    • async(异步,立即下载脚本,不妨碍页面中其他操作,只对外部脚本文件有效)
    • defer(表示脚本可以延迟到文档完全被解析和显示之后再执行,只对外部文件有效)
    • type(一般还是text/javascript,默认值也是这个)
  • <script>中嵌入脚本代码,不要出现“</script>”这个字符串

  • 解析脚本时,页面的处理也会暂时停止

  • 浏览器会按照<script>元素在页面中的出现先后顺序对它们依次进行解析

  • 浏览器在遇到body标签后才开始呈现内容

  • 现代web一般把全部javascript引用放在<body>元素中页面内容的后面,即</body>的前面

  • defer的延迟脚本会在浏览器遇到</html>标签后再执行

  • 最好只包含一个延迟脚本,并放在页面最底部

  • 文档模式:<!DOCTYPE html>

  • <noscript> 其中可以包含<body>中包含的任何元素,除了<script>,用来放浏览器不支持脚本或脚本被禁用时的替代内容

第三章

3.1

  • "use strict"; 严格模型

3.2 数据类型

  • ECMAScript中有5种简单数据类型:Undefined、Null、Boolean、Number和String。一种复杂类型:Object

Undefined类型

  • 对未初始化的变量执行typeof会返回undefined,对未声明的变量执行typeof也会返回undefined

Null类型

  • 从逻辑角度看,null值表示空对象指针

Boolean类型

  • Boolean()转型函数
    • Number类型:任何非0数字值(包括无穷大)->true;0和NaN->fasle

Number类型

  • 八进制字面量在严格模式下是无效的

浮点数值

  • 小数点后至少有一位数字
  • e表示法:3.125e7 = 3.125 * 10的7次方
  • 浮点数值最高精度是17位小数

数值范围

* 最小数值:Number.MIN_VALUE(5E-324)
* 最大数值:Number.MAX_VALUE(1.797693...e+308)
  • 超出数值返回会转换成Infinity或-Infinity,他们不能参与数值计算
  • isFinite()函数确定一个数值是否超出范围
  • Number.NEGATIVE_INFINITY和Number.POSITIVE_INFINITY也可以得到正负无穷

NaN

  • 任何数值除以非数值会返回NaN,因此不会影响其他代码执行
  • 任何涉及NaN的操作都会返回NaN
  • NaN和任何值都不相等,包括NaN本身
  • isNaN()

数值转换

  • Number()、parseInt()、parseFloat()
  • Number()
    • 如果是null,返回0
    • 如果是undefined,返回NaN
    • 如果是对象,调用对象valueOf()方法,如果转换结果是NaN,则调用对象的toString()方法,再按照字符串转换规则转换
  • parseInt()
    • 转换空字符串会返回NaN
    • "1234blue"会转成1234
    • 第二个参数设置基数,默认10,10进制
  • parseFloat()
    • 只解析10进制,忽略前导0,16进制字符串被解析成0
    • 解析到遇到一个无效浮点数字为止

String类型

  • num.toString(10)可以输出不同进制
  • String()方法
    • 如果值有toString(),调用之
    • null,返回“null”
    • undefined,返回“undefined”

3.3 操作符

  • 前置++,--的值会在语句被求值之前被改变
  • +操作符会对值进行Number()操作
  • 位操作符:~,&,|,……
  • 左移操作符:<< 右边空位补0,不影响符号位
  • 有符号右移: >> ,左边空位补符号位,符号位不移动,空位出现在符号位右侧
  • 无符号右移:>>> 会将数值的所有32位都向右移动,空位补0
  • 逻辑与和逻辑或是短路操作符,即如果第一个操作数能够决定结果,就不会对第二个操作数求值
  • var myObject = preferredObject || backupObject;
  • Infiity*0 结果是NaN
  • Infinity/Infinity 结果是NaN
  • 0/0 ,结果是NaN
  • Infinity-Infinity,结果如果看起来是0,则返回NaN
  • 比较操作符:任何操作数与NaN进行关系比较,都返回false
    • null 和 undefined是相等的
    • 在比较相等性之前,不能将null和undefined转换成其他任何值
    • 如果有一个操作数是NaN,相等操作符返回false,不相等返回true
    • 对于对象,比较两个对象是不是同一个对象
    • 如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较

3.4语句

  • switch语句中可以使用任何数据类型,每个case值不一定是常量,可以是变量,甚至表达式
  • switch在比较值是使用的是全等操作符

3.5函数

  • 即时你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数,可以传1、3、甚至不传。
  • 在函数体内可以通过arguements对象访问参数数组,可以根据参数个数不同做不同的事,来模仿重载
  • ecmascript传参都是传值,不可能传引用
  • 未指定返回值的函数返回的是特殊的undefined

var出的变量是函数级作用域,作用范围是在函数开始阶段和函数执行完成之前内都是存在的;并且如果该函数内部还存在匿名函数等特殊函数,这个var出的变量在匿名函数中任然可以用;
let出的变量作用域是 块作用域,在离开某一代码块,该变量就会被销毁不存在

相关文章

网友评论

      本文标题:2018-11-20红宝书1-3章总结

      本文链接:https://www.haomeiwen.com/subject/lcitqqtx.html