#javascript #internet-explorer #firefox
#javascript #internet-explorer #firefox
Вопрос:
Я определил имя функции как _ , определил функцию fn
function _(){};
function fn(){
try{
console.info(_);
}catch(_){
//
}
return _;
}
fn();
в выводе FF _(), но вывод IE8 не определен, почему этот результат?
Ответ №1:
РЕДАКТИРОВАТЬ @kevinpeng благодаря обновлению до вопроса оригинальной версии
ie7 не поддерживает window.console (я не могу протестировать, так как у меня его нет)
ie8 поддерживает консоль, если вы открываете инструменты разработчика с помощью F12
в firefox вы можете использовать, без проблем.
чтобы не было ошибок в вашем коде:
Вы можете сделать это для console.log:
function myConsole(param) {
if (window.console amp;amp; window.console.log) {
window.console.log(param);
}
}
Ответ №2:
В Firefox и любом другом браузере, который следует за ES3 / ES5, возвращаемым значением должен быть объект функции, который вы вызываете «_».
Однако в IE8 он поднимает любые привязки переменных catch-statement к началу функции. например.,
function fn() {
try {
return foo;
}
catch(foo) {}
}
эффективно ли
function fn() {
var foo;
try {
return foo;
}
catch(foo) {}
}
Обратите внимание, что это те же самые операторы var (они создаются и устанавливаются в undefined в начале функции и присваиваются определенному значению, когда выполнение достигает оператора var).