【发布时间】:2015-06-02 11:59:34
【问题描述】:
我注意到 javascript 中有一个奇怪的东西。考虑以下内容:
var fn = ''.toUpperCase.call
console.log(typeof fn); // "function"
fn(); // Uncaught TypeError: `fn` is not a function
以上是在我的 Chrome 开发者控制台上执行的。版本是43.0.2357.81 m。
typeof 运算符清楚地表明 fn 是一个函数,但错误提示并非如此。
我注意到Function.apply 至少显示了一些有意义的错误消息。
那么,什么时候是函数,而不是函数?
【问题讨论】:
-
请说明您如何准确地致电
fn。 -
我在拨打
fn时收到undefined is not a function,不是fn is not a function。 -
当然。不过,请展示一个完整的示例,说明什么代码会产生什么错误。
-
请澄清 consoele 是否是错字,如果不是,请编辑
-
Firebug 有更深入的错误消息:
TypeError: Function.prototype.call called on incompatible undefined。基本上call()需要在一个对象(this)上调用,这个对象丢失了,在原始语句之外被调用。
标签: javascript