ES6
# ECMAScript 6 简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 # let 和 const 命名 # let 基本用法 - 块级作用域 在 es6 中可以使用 let 声明变量,用法类似于 var ⚠️ let 声明的变量,只在 let 命令所在的代码块内有效 { let a = 10; var b = 20;}console.log(a); //a is...
more...JS进阶
# JavaScript 进阶 - 第 1 天 学习作用域、变量提升、闭包等语言特征,加深对 JavaScript 的理解,掌握变量赋值、函数声明的简洁语法,降低代码的冗余度。 理解作用域对程序执行的影响 能够分析程序执行的作用域范围 理解闭包本质,利用闭包创建隔离作用域 了解什么变量提升及函数提升 掌握箭头函数、解析剩余参数等简洁语法 # 作用域 了解作用域对程序执行的影响及作用域链的查找机制,使用闭包函数创建隔离作用域避免全局变量污染。 作用域(scope)规定了变量能够被访问的 “范围”,离开了这个 “范围” 变量便不能被访问,作用域分为全局作用域和局部作用域。 #...
more...浮点数存储
思考: 为什么 0.1+0.2 != 0.3? 为什么 1.005.toFixed (2)=1.00 而不是 1.01 双精度存储 首先在开始之前需要了解一下 JavaScript 的 number 类型在计算机中是如何存储的,这也是一切问题的基础。JavaScript 的数字都是 number 类型的,不管是整数还是浮点数都以 IEEE754 双精度的格式存储在计算机中,什么是双精度呢?就是以 64 个 bit 位来存储 分别是 1 个符号位 + 11 个指数位 + 52 个尾数位 举个例子,如果是 5.5 这个数字的话,则计算过程是这样的: 5.5 转二进制 =====>...
more...底层杂记与工具库函数
# NaN 历史遗留问题 由于历史遗留问题,NaN 的内部做了 hash 处理,使得每一次 NaN 返回的结果都不同。 NaN === NaN //false;Object.is(NaN,NaN) //true// 除此之外,延申:+0 === -0 // 返回 trueObject.is(+0 , -0) // 返回 false# null 的历史遗留问题 null 的本质其实是 0, 代表为空,而 undefined 的本质是一个特殊的对象,代表从未赋值过. Number(null); //0Number(undefined); //NaN12+null;...
more...手写题
# new 关键字 new 关键字实现分为三步: 1、根据构造函数的原型创建新的对象 2、执行构造函数,绑定 this 指向为新对象,传入参数 3、返回执行后的结果 function myNew(constructor,...args){ // 创建对象,原型为构造函数的原型对象 const obj = Object.create(constructor.prototype); // 执行构造函数,传入创建的对象和参数 const res = constructor.apply(obj,args); // 注意 apply 方法是函数对象的方法,普通对象不可用 return...
more...