javaScript深入学习[2]

一、数字

js中的数字是双精度浮点数(64位),但是许多浏览器实现了对整型的优化,通过位运算可以将浮点型转换成32位整型

1.数字内部表示

类型符号位(sign)指数(exponent)分数(fraction)
占位1位11位52位
位数第63位第62~52位第52~0位

表示数计算方式:
(-1)^sign * %1.fraction * 2^exponent
其中指数的范围是[ -1023 ,1024 ]
当指数为1024时,代表一些错误值,如 NaN ,Infinity,
当指数为-1023时,
①分数为0 ,则代表 0
②分数不为0,则代表接近0的数字;
表示小数的的精度值为2^-53,由分数位数决定;
整数的安全表示范围是 2^-53~2^53;
数组索引范围[ 0 ,2^32 - 1 ],32位无符号整型;

二、语句

return 和 throw 也会终止switch语句;
width 作用以及被废弃的原因;

三、异常捕获

1.Error构造器
Error :通用构造器 ;
EvalError : ES5中未使用,兼容上个版本;
RangeError : 数值超出允许范围;
ReferenceError : 发现一个非法引用值;
SyntaxError : 语法解析错误;
TypeError : 操作类型与其期望类型不一致;
URIError : 某个全局URI控制函数的使用不兼容其定义;
2.栈跟踪

四、函数

js中函数三种形式 ①普通函数 ②方法 ③构造器;
模拟具名参数;

五、变量:作用域、环境、闭包

IIFE引入新作用域;

!function(){}()
void function(){}()
(function(){}())
//这三种写法都可以

不建议引用全局变量时使用window前缀;
2.环境
函数每次被调用都会为参数,变量准备新的存储空间,直到调用结束才被释放,因此递归调用会产生大量的调用栈,如:

function fn(n){
  if(n <= 1){
    return 1
  }
  return n * fn(n - 1)
}

但是两个函数在词法维度相互依赖,如

function doNTimes(n ,action){
  function doNTimesRec(x){
    action();
  }
}

那么js会通过内部属性[[ Scope ]]来记录函数作用域,这时存在堆中的,即使函数运行结束也可以访问到。闭包就是这个原理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值