以下代码同样的写法,为什么一个报错,一个正确?

var write = document.write;
var log = console.log;

log('bbbbb'); //正确执行
write('aaaaa'); //报错 Uncaught TypeError: Illegal invocation
阅读 2.6k
3 个回答

这种情况一般是write方法内部使用了this, document.write调用时,this指向document。 你赋值给write然后全局调用write()时,this指向了window。所以报错。 可以这样调用write.call(document,"aaaaa");

Illegal invocation 非法调用,就是不给你这么干
window没这个方法 你还要吧document传进去
console的话就没有这一层在哪都行

Uncaught TypeError: Illegal invocation 是指非法调用,
通常发生的原因是: Calling a Method with a Function Pointer without ".call" or ".bind".

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题