美文网首页
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