我将函数名定义为_,定义函数fn
function _(){};
function fn(){
try{
console.info(_);
}catch(_){
//
}
return _;
}
fn();
在FF输出_()中,但IE8输出未定义,为什么会出现这种结果?
答案 0 :(得分:0)
编辑 @kevinpeng感谢您更新问题原始版本
ie7不支持window.console(我无法测试,因为我没有它)
如果您通过F12打开开发人员工具,ie8支持它控制台
所以不要在代码中出错:
你可以为console.log执行此操作:
function myConsole(param) {
if (window.console && window.console.log) {
window.console.log(param);
}
}
答案 1 :(得分:0)
在Firefox和ES3 / ES5之后的任何其他浏览器中,返回值应该是您调用“_”的函数对象。
然而,在IE8中,它将任何catch语句变量绑定提升到函数的顶部。如,
function fn() {
try {
return foo;
}
catch(foo) {}
}
有效地做到了
function fn() {
var foo;
try {
return foo;
}
catch(foo) {}
}
请注意,这是相同的var语句(它们在函数开头创建并设置为undefined,并在执行到var语句时分配一个特定值)。