摘要:
作用域链(ES5.1规格视角) javascript作用域类型 javascript采用的是 词法作用域(静态作用域) 与之相对的是 动态作用域 ,以下的例子可以很好地说明 静态作用域是与我们惯性思维冲突的,从上述例子可以看出,我们第一次看会习惯性 往函数调用位置去找变量(动态作用域思维) ,但是 阅读全文
摘要:
执行环境(环境) 执行环境的用处 执行环境 定义了变量或函数有权访问的其他数据 , 每一个执行环境都存在一个关联的变量对象(VO) ,代码无法访问,内部解析器会使用它,如果 环境为函数,则将函数的AO作为VO , 函数执行时,会创建一个以当前函数VO为前端的作用域链 ,以 保证执行环境有权访问的所有 阅读全文
摘要:
类数组 什么是类数组 1. 属性键为数字字符串 2. 有长度属性 length 常见的类数组场景 arguments 如何把类数组转换为数组 为了得到数组的特性 转化的实质 把类数组中的属性迭代到真实数组中去,核心如下图 js let result = [] for (let i = 0; i 阅读全文
摘要:
三栏布局(两边固定,中间自适应) 常用方案及演变过程 1. 浮动方式: 实现关键点: 要把中间放在左右块的后面,然后左右设置左右浮动即可。 优点: 简单 缺点: 中间 main 不能清除浮动,宽度较小布局混乱 代码 2. 绝对定位方式: 实现关键点: 左右绝对定位 中间用 margin 撑开 优点: 阅读全文
摘要:
语法 语句和表达式 我们用英语的术语来说明它们的区别 “句子”(sentence)是完整表达某个意思的一组词,由一个或多个“短语”(phrase)组成,它们之间由标点符号或连接词(and 和or 等)连接起来。短语可以由更小的短语组成。有些短语是不完整的,不能独立表达意思;有些短语则相对完整,并且能 阅读全文
摘要:
javascript运行环境 js如果只在引擎中运行,它会严格遵循并且可以预测的,但是js几乎都在宿主环境中运行,浏览器或者Node环境 ECMAScript中的Annex B 介绍了浏览器兼容性问题导致与官方规范的差异 • 在非严格模式中允许八进制数值常量存在,如0123(即十进制的83)。 • 阅读全文
摘要:
隐式强制转换 在其可控的情况下,减少冗余,让代码更简洁,很多地方都进行了隐式转换,比如常见的三目表达式、if()、for()、while、逻辑运算符 || &&,适当通过语言机制,抽象和隐藏一些细枝末节,有助于提高代码可读性,以三目表示式为例 1.字符串和数字之间的隐式转换 通过重载,+ 运算符即能 阅读全文
摘要:
什么是显式 这里的显式和隐式是以普遍的标准来进行讨论的,你能看出来是怎么回事,那么它对你是“显式”,相反你不知道的话,对你就是“隐式” 抽象操作 字符串、数字、布尔值之间类型转换的基本规则 ES5定义了一些操作,诸如ToString、ToNumber、ToBoolean、ToPrimitive抽象操 阅读全文
摘要:
开篇 值的传递方式 1.值传递 表示传递过程中复制了值 2.引用传递 表示传递过程中传递的是值的引用 js的传递方式 值传递 看下面的例子 如何生成对象 1.使用对象字面值 2.使用构造函数 我们先看一下原生构造函数 String() // 字符串 Number() // 数字 Boolean() 阅读全文
摘要:
开头 js数字没有明确区分浮点数和整数类型,统一用number类型表示。 number 基于IEEE 754标准实现 js采用的是双精度(64位二进制) 我们看一个基于IEEE 754标准实现都有会有的经典问题 我们很容易修正这个错误,知道是因为偏差值出现问题,我们可以定义一个偏差值,在此偏差值内我 阅读全文