
JS深入理解
记录总结一些边界知识点,探索其知识路径
LS.YU
热爱编程,喜欢折腾的小年轻!
展开
-
试试length的特殊能力
提问下面的代码输出的结果是什么?const season = ['spring','summer','autumn','winter'];season.length = 0;console.log(season[0]); // ??答案: undefined分析看到这道题目的时候,心中想的答案是 “spring” ,以为 length 是 writeable: false 的。然...原创 2019-10-21 21:28:49 · 258 阅读 · 0 评论 -
JS深入理解—研究JS变量声明和函数声明提升
还是从一个例子研究起,如下代码将会输出什么结果呢?sayHello();function sayHello() { console.log(name); console.log(gender); var name = 'yulsh'; let gender = '男';}输出的结果是:undefinedUncaught ReferenceError: ...原创 2019-08-06 23:05:06 · 136 阅读 · 0 评论 -
JS深入理解—node和es环境下模块的导入导出
前言在js模块化开发中,经常会被 module.exports / exports / export 几个关键字所混淆。在进行知识点分析之前,先来理清楚它们的使用范围。导出模块:module.exports / exports 只支持在 node 中使用export 只支持在 es6 中使用导入模块:require 支持在 node 和 es6 中使用import 只支持在 es6 ...原创 2019-09-27 20:45:56 · 608 阅读 · 0 评论 -
JS深入理解—对象深拷贝和浅拷贝,手写DeepClone
JS对象之深拷贝和浅拷贝关于对象的深拷贝和浅拷贝,通俗点讲,对象B复制对象A,当改变B的时候,A跟着变,那么就是浅拷贝,如果A不变,两者相互不影响,那么就是深拷贝。要理解对象的深拷贝和浅拷贝,得先理解 js 中值类型和引用类型在内存中的存储方式,可以看看这篇文章。数据类型值类型(Stack):包括 Number, String, Boolean, Null, Undefined, Symb...原创 2019-10-03 00:02:23 · 2100 阅读 · 0 评论 -
JS深入理解—探索parseInt函数
前言看到这样一道题目: ['1','2','3'].map(parseInt) 执行结果是什么?为什么?执行结果是:[1, NaN, NaN]我们将题目的代码转换一下:['1','2','3'].map((item,index)=>{ return parseInt(item,index);})相当于:parseInt('1', 0); // 1 why??p...原创 2019-10-02 00:25:25 · 794 阅读 · 0 评论 -
JS深入理解—模拟实现防抖函数
前言在理解防抖之前,先来了解下出现抖动的场景:开发搜索功能的时候,输入字符执行查询操作,network 中会瞬间出现无数的ajax请求进行页面适配,调整窗口大小的时候适配不同的布局,如果适配业务复杂,浏览器可能出现卡顿现象抖动:频繁触发而导致不可预测后果的现象。防抖:防止在短时间内频繁触发,一段时间内只触发一次。我们常常遇到的一些频繁触发的事件有:输入框的 keyup / ke...原创 2019-10-04 15:24:02 · 2622 阅读 · 0 评论 -
JS深入理解—详解Object.create(null)、new实现过程以及手写实现
前言在阅读Vue框架源码的时候,会发现作者大量使用Object.create(null)来创建空对象。我们常常使用字面量{}的方式创建,他们之间有什么区别?为啥这么做呢?带着这些疑问,我们来探索其原因。其标准定义请看Object.create。Object.create(null)与{}的区别我们通过例子来直观的认识下两者:let obj = {};let jbo = Object.cr...原创 2019-10-09 23:42:30 · 3348 阅读 · 0 评论