IE、FF 尝试{}catch(){} 错误?
我定义函数名称为 _ ,
function _(){};
function fn(){
try{
console.info(_);
}catch(_){
//
}
return _;
}
fn();
在 FF 输出 _() 中定义函数 fn ,但是 IE8 输出 undefined,为什么会出现这样的结果?
I defined function name as _ , defined function fn
function _(){};
function fn(){
try{
console.info(_);
}catch(_){
//
}
return _;
}
fn();
in FF output _(), but IE8 output undefined, why this result?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
编辑 @kevinpeng 感谢更新问题原始版本
ie7 不支持 window.console (我无法测试,因为我没有它)
ie8支持控制台,如果你
在firefox中按F12打开开发者工具就可以使用,没问题。
所以不要在代码中出现错误:
您可以对 console.log 执行以下操作:
EDIT @kevinpeng thanks to updating to question original version
ie7 does not support window.console (I can't test as i don't have it)
ie8 supports it console if you open developer tools by F12
in firefox you can use, no problem.
so not to have error in your code:
You can do this, for console.log:
在 Firefox 以及任何其他遵循 ES3/ES5 的浏览器中,返回值应该是您称为“_”的函数对象。
然而,在 IE8 中,它将任何 catch 语句变量绑定提升到函数的顶部。例如,
实际上确实
注意这是相同的 var 语句(它们在函数开始时创建并设置为未定义,并在执行到达 var 语句时分配一个特定值)。
In Firefox, and any other browser that follows ES3/ES5, the return value should be the function object you call "_".
In IE8, however, it hoists any catch-statement variable bindings to the top of the function. e.g.,
effectively does
Note this is the same var statements (they are created and set to undefined at the start of the function, and assigned a specific value when execution reaches the var statement).