在IE7中可能导致此行为的原因是什么?我无法在jsfiddle上重现这个问题...
var func=new Function('arg','return 2*2;');
alert(typeof func);
返回对象。
我完全糊涂了。
如何调试此问题?如何弄清楚新函数返回对象的原因?
更新
应该不是这样吗?或者我只是不明白?对我来说,它看起来像Windows 8的bug。
https://www.dropbox.com/s/mhyuab3mhj2yu59/ie7_windows8_bug.png
更新
这取决于IE8,在IE9中它已经消失了。
答案 0 :(得分:1)
我不能在我的机器上复制这个,而你的权利 - 这是错误的。 callable
的任何内容都应根据EMCA specs为function
运算符返回typeof
。如果要测试给定变量是否是面对此问题的函数,可以使用:
function isFunction(func){
return typeof func === 'function' ||
(typeof func === 'object' && func instanceof Function);
}
答案 1 :(得分:0)
延长Mark Rhodes回答
function realType( t ) {
return Object.prototype.toString.call(t).slice(8, -1);
};
var func=new Function('arg','return 2*2;');
alert( realType(func) ); // Function/Object
alert( realType([]) ); // Array
alert( typeof [] ) // object
alert( realType(new Date) ); // Date
alert( typeof (new Date) ); // object
答案 2 :(得分:0)
通过此解决方案解决问题:
var func=eval('(function(){return function(){ your code here }})()');