Skip to content

JavaScript

JavaScript 的数据类型

  • 基本数据类型:NumberStringBooleanUndefinedNullSymbolBigInt
  • 引用数据类型:Object

script 标签 defer 和 async 的区别

  • 相同点:asyncdefer 下载都不会阻塞 HTML 解析
  • 不同点:async 下载完成后立即执行,不会等待 HTML 解析完成;defer 会等待 HTML 解析完成再执行

<script>

script

<script async>

script async

<script defer>

script defer

Object.is() 与比较运算符 ==、=== 的区别

  • 双等号(==):如果两边的类型不一致,则会进行强制类型转换后再进行比较
  • 三等号(===):如果两边的类型不一致时,不会做强制类型转换,直接返回 false
  • Object.is():一般情况下和三等号的判断相同,只有两个不同点
js
NaN === NaN; // false
-0 === +0; // true

Object.is(NaN, NaN); // true
Object.is(-0, 0); // false

判断数组的方式有哪些

Object.prototype.toString.call()

js
Object.prototype.toString.call(obj).slice(8, -1) === "Array";

Array.isArray()

js
Array.isArray(obj);

instanceof / Array.prototype.isPrototypeOf

js
obj instanceof Array;
Array.prototype.isPrototypeOf(obj);

Cookie、SessionStorage 与 LocalStorage 的区别

CookieSessionStorageLocalStorage
数据的生命周期一般由服务器生成,可设置失效时间。如果在浏览器端生成 Cookie,默认是关闭浏览器后失效仅在当前会话下有效,关闭页面或浏览器后被清除永久(除非被清除)
存放数据大小4k 左右一般为 5MB同 SessionStorage
与服务器端通信每次都会携带在 HTTP 头中,如果使用 cookie 保存过多数据会带来性能问题仅在客户端(即浏览器)中保存,不参与和服务器的通信同 SessionStorage