对象枚举属性 对象枚举属性for/in循环对指定对象的每个可枚举(自有或继承)属性都会运行一次循环体,将属性的名字赋给循环变量。对象继承的内置方法是不可枚举的,但你的代码添加给对象的属性默认是可枚举的。例如: 12345678910let o={x:1,y:2,z:3}o.propertyIsEnumerable('toString')for(let i in o) 2022-10-11 JavaScript JavaScript权威指南第七版 JavaScript
for/of、Object.entries() for/of、Object.entries()for/offor/of循环专门用于可迭代对象。现在只要知道数组、字符串、集合和映射都是可迭代的就行了。它们都是一组或一批元素,可以使用for/of循环来循环或迭代这些元素。 12345let data=[1,2,3,4,5,6,7,8,9],sum=0for(let i of data){ sum += i}sum // 4 2022-10-10 JavaScript JavaScript权威指南第七版 JavaScript
先定义操作符(??)(缺值合并) 先定义操作符(??)(缺值合并)先定义(first-defined)操作符**??**求值其先定义的操作数,如果其左操作数不是null或undefined,就返回该值。否则,它会返回右操作数的值。与&&或||操作符类似,??是短路的:它只在第一个操作数求值为null或undefined时才会求值第二个操作数。如果表达式a没有副效应,那么表达式a ?? b等价于: 1( a !== 2022-10-08 JavaScript JavaScript权威指南第七版 JavaScript
宏任务和微任务 宏任务和微任务js 代码执行顺序,先同步任务,异步任务进入事件列表(Event Table)并注册回调函数,等待指定的事件完成时,事件列表会将这个回调函数移入事件队列(Event Queue)/任务队列(Task Queue),任务队列被细分为两个,macro-task(宏任务)队列和micro-task(微任务)队列 1.微任务是用于插队的 2.微任务是快于宏任务的,但是一般是由宏任务<s 2022-09-29 JavaScript 你不知道的JavaScript JavaScript
事件循环 事件循环JavaScript 引擎并不是独立运行的,它运行在宿主环境中,对多数开发者来说通常就是 Web 浏览器。经过最近几年(不仅于此)的发展,JavaScript 已经超出了浏览器的范围,进入了其他环境,比如通过像 Node.,js 这样的工具进入服务器领域。实际上,JavaScript 现如今已经嵌入到了从机器人到电灯泡等各种各样的设备中。 但是,所有这些环境都有一个共同“点”(thread 2022-09-29 JavaScript 你不知道的JavaScript JavaScript
数字语法 数字语法比较小的数值二进制浮点数最大的问题(不仅JavaScript,所有遵循IEEE 754规范的语言都是如此),是会出现如下情况: 10.1 +0.2 === 0.3;// false 从数学角度来说,上面的条件判断应该为 true,可结果为什么是false 呢?简单来说,二进制浮点数中的0.1和0.2并不是十分精确,它们相加的结果并非刚好等于0.3,而是一个比较接近的数字0.3000000 2022-09-27 JavaScript 你不知道的JavaScript JavaScript
可计算属性名 可计算属性名对象ES6增加了可计算属性名,可以在文字形式中使用[]包裹一个表达式来当作属性名: 123456789var prefix='foo'var myObj={ [prefix+'bar']:'hello', [prefix+'baz']:'world'}myObj[ 2022-09-27 JavaScript 你不知道的JavaScript JavaScript
属性描述符 属性描述符ES5开始,所有的属性都具备了属性描述符 definePropertydefineProperty添加一个新属性或者修改一个已有属性(如果他的configurable=true)并对特性进行设置 12345678910var myObj={}Object.defineProperty(myObj,'a',{ configurable: t 2022-09-26 JavaScript 你不知道的JavaScript JavaScript
为什么null是对象 为什么null是对象null有时候会被当做一种对象类型,但是其实是语言本身的一个bug,即对null执行 typeof null 时返回字符串 'object',实际上,null本身是基本类型 原理是这样的,不同的对象在底层都表示为二进制,在JavaScript中二进制前三位都为 0 的话会被判断为 object 类型,null 的二进制表示全是 0 ,所以执行 typeof 时返 2022-09-14 JavaScript 你不知道的JavaScript JavaScript