IE、FF 尝试{}catch(){} 错误?

发布于 2024-12-11 08:10:53 字数 230 浏览 0 评论 0原文

我定义函数名称为 _ ,

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

音栖息无 2024-12-18 08:10:53

编辑 @kevinpeng 感谢更新问题原始版本

ie7 不支持 window.console (我无法测试,因为我没有它)
ie8支持控制台,如果你

在firefox中按F12打开开发者工具就可以使用,没问题。

所以不要在代码中出现错误:

您可以对 console.log 执行以下操作:

function myConsole(param) {
    if (window.console && window.console.log) {
        window.console.log(param);
    }
}

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:

function myConsole(param) {
    if (window.console && window.console.log) {
        window.console.log(param);
    }
}
生活了然无味 2024-12-18 08:10:53

在 Firefox 以及任何其他遵循 ES3/ES5 的浏览器中,返回值应该是您称为“_”的函数对象。

然而,在 IE8 中,它将任何 catch 语句变量绑定提升到函数的顶部。例如,

function fn() {
  try {
    return foo;
  }
  catch(foo) {}
}

实际上确实

function fn() {
  var foo;
  try {
    return foo;
  }
  catch(foo) {}
}

注意这是相同的 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.,

function fn() {
  try {
    return foo;
  }
  catch(foo) {}
}

effectively does

function fn() {
  var foo;
  try {
    return foo;
  }
  catch(foo) {}
}

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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文