为什么我的程序仅在开始时输入console.log才能运行?

时间:2018-11-23 12:21:21

标签: javascript

我试图练习重写/用猴子修补方法定义,所以我这样写:

const p = Array.prototype.push;

Array.prototype.push = function() {
  console.log("X");
  return p.apply(this, arguments);
};

const nums = [1, 2];
nums.push(3);
console.log(nums);

我在Node 10.11.0上运行它,什么也没发生。我得到任何形式的零输出,而且没有错误。

如果我一开始就添加了一个console.log调用,并且完全没有其他任何更改,那么它突然会按照我的预期工作。

console.log("Blah");
const p = Array.prototype.push;

Array.prototype.push = function() {
  console.log("X");
  return p.apply(this, arguments);
};

const nums = [1, 2];
nums.push(3);
console.log(nums);

这对我来说绝对是离奇的,我无法想象它会发生的任何原因。在Google上也找不到类似问题的证据。

0 个答案:

没有答案