Skip to content

一个难以发现的 JavaScript Bug

Published: at 01:42 PMSuggest Changes

写了一个乍一眼看上去没什么问题的 bug

import test from './test';

// 这一行会引发 bug,知道为什么吗?
console.log(bug(123));

const a = {
  test,
};

export function bug(params) {
  console.log(`params`, params);
  console.log(`a`, a);
  return params;
}

console.log(bug(456));

export default bug;

代码走到我注释的那一行 console.log(bug(123)); 就开始报错了。知道为什么吗?

原因是 const 没有变量提升。。。

当然好奇宝宝想看一下 webpack 打包后的代码是什么样子。

(() => {
  'use strict';
  console.log(n(123));
  const o = {
    test: {
      a: 123,
      b: 234,
      c: 345,
    },
  };
  function n(n) {
    return console.log('params', n), console.log('a', o), n;
  }
  console.log(n(456));
  const e = n;
  document.body.appendChild(
    (function () {
      const o = document.createElement('div');
      return (o.innerHTML = 'Hello Bug'), console.log('bug', e(789)), o;
    })()
  );
})();

Previous Post
Vue 学习(一)深入 Vue 源码学习 JavaScript
Next Post
JS 正则表达式技巧