你不知道的JavaScript(中卷)——读书笔记

1. 类型

ECMAScript语言类型: Undefined、Null、Boolean、String、Number、Object、Symbol(ES6新增)

  • 类型判断:使用typeof判断类型

    特例: (null的二进制前三位是000)

    typeof null === "object" // true
    // 判断Null
    !a && typeof a === "object"
    
  • 函数

    // 函数
    typeof function a(b,c){} === "function" // true
    // 函数对象的length是其声明参数的个数
    a.length; // 2
    
  • JS中的变量是没有类型的,只有值才有类型,变量可以随时持有任何类型的值——弱类型

  • undefined——已声明但还没有赋值 undeclared—— 没有声明过

    // 未声明的变量 
    typeof b; // "undefined" 
    

2. 值和引用

  • 简单值(即标量基本类型值,scalar primitive)总是通过值复制的方式来赋值/传递,包括null、undefined、字符串、数字、布尔和ES6中的symbol,通过值传递的方式不会影响到原来的值
  • 复合值(compound value)——对象(包括数组和封装对象,参见第3章)和函数,则总是通过引用复制的方式来赋值/传递,通过引用传递的方式可能改变原来的值,JS由于没有指针,它的引用只能指向值,不能指向别的变量/引用

3. 原生函数

常见的原生函数:String() Number() Boolean() Array() Obejct() Function() RegExp() Date() Error() Symbol()

  • 封装对象(object wrapper)扮演着十分重要的角色。由于基本类型值没有.length和.toString()这样的属性和方法,需要通过封装对象才能访问此时JavaScript会自动为基本类型值包装(box或者wrap)一个封装对象
  • JavaScript为基本数据类型值提供了封装对象,称为原生函数(如String、Number、Boolean等)。它们为基本数据类型值提供了该子类型所特有的方法和属性(如:String#trim()和Array#concat(…))

4. 异步

它是指程序的一部分现在运行,而另一部分则在将来运行——现在和将来之间有段间隙,在这段间隙中,程序没有活跃执行——等待用户输入、从数据库或文件系统中请求数据、通过网络发送数据并等待响应,或者是在以固定时间间隔执行重复任务(比如动画)

事件循环:

4.1 回调
  • 控制反转
  • 不符合大脑思考
4.2 Promise
  • 控制反转再反转
  • 语法糖
  • 异常处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值