JavaScript高级程序设计(第三版)学习笔记(1)

学习笔记1

写在前面

已经有过几个月的比较集中的前端开发基础,然后觉得既然学一个东西那就要学好吧,所以看一下这个书。会对里面的东西记一下,但是并不会面面俱到,只是对我还不熟悉或者容易混淆的东西。前两章省略。

第三章

  • 标识符
    • 第一个字符:字符,下划线,美元
    • 驼峰大小写格式
  • 严格模式
    • 顶部加入”use strict”
    • 一些不确定行为将得到处理,对某些不安全的操作也会抛出错误
  • 变量是松散型,可以用来保存任何类型的数据
  • 省略var操作符,变成全局变量
function test() { 
    message = "hi"; // global
}
  • 数据类型
    • 五种简单的数据类型: undefined null boolean number string
    • typeof 返回 以上(除了null)或者object
    • undefined: 使用var声明变量但未对其加以初始化。只有一个值。
    • null: typeof返回为object。只有一个值。
      • null == undefined // true
    • boolean: true不一定1,false不一定0
    • number
      • 浮点数
        • ECMAScript会不失时机地将浮点数值转换为整数值
        • var a = 10.0 –> 解析为10,整数
        • var floatNum = 3.125e7 // e表示法
      • -Infinity Infinity 负无穷和正无穷
      • NaN
        • 0除以0返回NaN
        • 不与任何值相等,包括NaN本身
      • 数值转换
        • 非数值转为数值:Number(), parseInt(), parseFloat()
        • Number()
          • Boolean: 1 and 0
          • null: 0
          • undefined: NaN
          • string
            • 十六进制可转,为十进制
            • 前导零被忽略,所以八进制不行
            • 有别的字符:NaN
        • parseInt
          • 十六进制可以,转为十进制
          • 低版本ECMAScript支持八进制,高版本不支持
          • 可以给第二个参数,表示输入的进制parseInt("af", 16);
        • parseFloat
          • 只解析十进制,始终忽略前导零
    • string
      • 字符串是不可变
      • 几乎每个值都有toString()方法
    • object
      • 每个object示例都有下列属性方法
        • Constructor: 保存着创建当前对象的函数
        • hasOwnProperty(propertyName):检查是否存在
        • isPrototypeOf(object):是否另一个对象原型
        • toLocaleString
        • toString
        • valueOf 通常与toString返回值相同
  • 操作符
    • >> 有符号右移
    • >>> 无符号右移
    • 同时使用两个!,模拟Boolean转型函数
    • 乘法
      • NaN = NaN
      • Infinity * 0 = NaN
      • Infinity * pos = Infinity, Infinity * neg = -Infinity
      • 如果有一个操作数不是数值,后台调用Number()转为数值
    • 除法
      • 0 / 0 = NaN
      • 非零有理数 / 0 = Infinity/-Infinity
      • 如果有一个操作数不是数值,后台调用Number()转为数值
    • 加法
      • Infinity + (-Infinity) = NaN
      • 0 + (-0) = 0
      • var result2 = 5 + "5";// "55"
    • 关系操作符
      • 如果两个操作数都是字符串,则比较两个字符串对应的字符编码值
      • 大写字符的字符编码全部小于小写字母的字符编码
      • 全部转换为大写或者小写后再比较
      • 如果字符串里面是数字,会和想要的结果不一样
    • 相等操作符
      • 相等和不相等——先转换再比较
      • 全等和不全等——仅比较而不转换
      • 相等和不相等
        • == !=
        • boolean - > number
        • string & number -> number & number
        • object & others -> object.valueOf() & others
      • 全等和不全等
        • === !==
        • “55” == 55 //true
        • “55” === 55 // false
  • 语句
    • for-in语句
    • for (property in expression) statement
    • 属性名顺序不可预测
  • 函数
    • arguments参数。不在乎多少参数个数
    • 所有参数传递都是值,不可能通过引用传递参数
    • 不能重载

第四章

var num1 = 5;
var num2 = num1;
  • num1和num2是完全独立的.
  • 对于object来说,指向的是一样的
var obj1 = new Object()
var obj2 = obj1
obj1.name = "Nocholas"
alert(obj2.name) // "Nicholas"
  • 改变obj1之后,obj2也会改变
  • 向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。
  • 作用域加长
    • try-catch语句的catch块
    • with语句
  • Js没有块级作用域
  • 垃圾收集
    • 自动垃圾收集机制
    • 找出那些不再继续使用的变量,释放其占用的内存。会按照固定的时间间隔周期性的执行。
    • 标记清除
      • 进入环境,标记为“进入环境”。离开环境时,标记为“离开环境”
      • 会在运行的时候给存储在内存中的所有变量都加上标记,然后去掉环境中的变量以及被环境中的变量引用的变量的标记
    • 引用计数
      • 循环引用的问题
    • IE性能问题:IE的垃圾收集器是根据内存分配量运行的。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值