代码
查找并修复页面意外的overflow
· ☕ 1 分钟

响应式网站设计切换不同尺寸后偶尔会出现页面内容比屏幕要宽面导致出现横向滚动条。这里有个脚本可以方便的检测哪个元素超出了屏幕:

var docWidth = document.documentElement.offsetWidth;

[].forEach.call(
  document.querySelectorAll('*'),
  function(el) {
    if (el.offsetWidth > docWidth) {
      console.log(el);
    }
  }
);

找到元素后,修改适配即可。


什么是闭包?
· ☕ 3 分钟

文章内容

  • 《JavaScript ES6 函数式编程入门经典》4.1理解闭包
  • 《JavaScript高级程序设计(第3版)
  • 《代码之髓 编程语言核心概念》
  • 闭包 - JavaScript | MDN


['1','7','11'].map(parseInt)反向面试题
· ☕ 2 分钟

经常看到这个面试题:

想必大家已经非常熟悉Map的原理,因为:

map(callback, [thisArg]) 方法:

  • 接受一个回调函数 callback,返回一个 新的数组
  • 返回的数组的元素的值为调用 callback 函数所返回的值(原数组有几个元素,就调用几次 callback
  • callback 接受 3 个参数:
    • currentValue:当前正在处理的数组元素的值
    • index:当前正在处理的数组元素的索引
    • arr:调用 map 方法的数组

而parseInt接收两个参数:string值和radix进制值:


JavaScript 8种字符串反转的方法
· ☕ 2 分钟

在JavaScript中,如果要做字符串反转,我们第一时间会想到:

1

const str = “www.mzh.ren”;
str.split(’’).reverse().join(’’);
// “ner.hzm.www”

即,字符串转化为数组,调用数组的reverse()方法,连接数组成字符串。


React 项目启动报错:The "path" argument must be of type string
· ☕ 1 分钟

今天下载一个旧的React项目,yarn start 运行,报错:

TypeError [ERR_INVALID_ARG_TYPE]: The “path” argument must be of type string. Received type undefined

在stackoverflow上找到了解决方法,只需要把package.json 中 react-scripts升级到"^3.4.0" 即可。


ES6 键值对存储:Object还是 Map?
· ☕ 2 分钟

我们经常需要做键值对存储,大多时候我们会选择对象字面量Object ({}) 来存储,往往会忽略ES6 新提供的数据结构:Map。从字面上来看,Map才是正确的选择。


Module build failed: Error:Node Sass does not yet support your current environment
· ☕ 1 分钟

npm run dev 启动一个 Vue  项目报错:

Failed to compile with 1 errors 21:36:21
error in ./src/App.vue

Module build failed: Error: Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (72)
For more information on which environments are supported please see:
https://github.com/sass/node-sass/releases/tag/v4.9.3

可能是以前一直没用sass,升级了node没有连带升级相关组件,简单粗暴的卸载重装,解决问题。