2013-05-22 3 views
3

я тестировал следующий код:Выполняют ли самозапускаемые функции в строгом режиме IE?

$(function() { 
    "use strict" 
    (function() { 
     console.log("something"); 
    }()); 
}); 

но при запуске в IE, я получаю исключение: «Функцию ожидаемую». В Firefox это прекрасно работает. Это похоже на базовую функциональность. Что я делаю не так?

+5

Из любопытства, делает добавление точкой с запятой после «использовать строгий» струна помощь? (Также, вы уверены, что вы импортировали jQuery?) – Pointy

+0

Я не уверен, что это будет иметь значение, но я всегда использую для этого другой синтаксис. '(function() {})()' – Brad

+0

Какую версию IE вы используете? –

ответ

4

Правила автоматической установки с запятой довольно странные. Это горячо оспариваемый вопрос, следует ли кодировать таким образом, чтобы использовать эту функцию, поэтому я не буду вдаваться в это, но в этом случае происходит то, что парсер считает, что вы можете пытаться вызвать функцию. Добавление точки с запятой после строки должно исправить это.

Еще одна вещь, которую вы могли бы попробовать:

$(function() { 
    "use strict" 
    !function() { 
     console.log("something"); 
    }(); 
}); 

(Лично я бы просто добавить точку с запятой :-)

+0

+1. Любые идеи, почему это работает в Firefox, а не в IE? Не следует ли явно указывать это поведение в спецификации? – Matt

+1

@Matt: Он также выдает ошибку в FF 22 и Chrome 26. –

+1

@FelixKling, ах. Я думаю, что OP ошибается в работе в Firefox, может быть еще одной причиной, по которой он «работает» в Firefox, но не в IE;). – Matt

Смежные вопросы