2013-06-29 5 views
1

Я знаю, что возможность передавать имена функций в качестве параметров обрабатывается практически во всех современных браузерах, но я задаюсь вопросом о старшем совместимости браузеров:функция Javascript в качестве параметра - совместимость браузера

  1. Что было первая версия JavaScript/ECMAScript, которая его поддерживала? Поддерживалось ли это с первых дней JavaScript? (Это меня удивит)
  2. Каковы были версии каждого из основных браузеров (Google Chrome, Firefox, IE, Safari, Opera и т. Д.), Которые впервые его поддерживали?
+0

AFAIK вы можете использовать анонимные функции как выражения и передавать именованные функции так же, как переменные pre-IE6, поэтому это никогда не было проблемой. –

+0

'addEventListener' и' attachEvent' обе принимают функцию в качестве аргумента, поэтому она поддерживается, пока их обработка событий из javascript, вероятно, является самым первым источником javascript, так как вы не могли много сделать с javascript без обработки событий. – jfriend00

+0

Это всегда поддерживалось, что меня нисколько не удивляет, потому что это одна из определяющих особенностей JavaScript. Вы можете прочитать первую спецификацию здесь: http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf – JJJ

ответ

0

Насколько я знаю, функции всегда были объектами, а объекты всегда проходили как аргументы.

0

Использование анонимных функций как выражения и прохождения названий заявленных функций было доступно на все JavaScript с поддержкой браузеров, так как до Internet Explorer 6.

Первой документации I можно найти на нем ECMA-262, который датируется 1997 годом.

Если вы говорите о полной поддержке, то старые версии IE (even up to IE8), страдал от переменной утечки в имя функции выражение, где имя выражения функции становится определены и установлены в родительской области, как если бы он был на самом деле объявлено функцией.

// Assuming old JScript engine 
typeof foo; // "undefined", expected, it's not been defined yet 
bar; // defined as if hoisted function declaration, unexpected 

var foo = function bar() {}; 
foo; // as expected 
bar; // identical to foo, not expected 

foo === bar; // false, they're actually different function objects in memory 
0

Какова была первая версия JavaScript/ECMAScript, который поддерживал его? Поддерживалось ли это с первых дней JavaScript? (Это удивило бы меня)

Это особенность ядра языка.

Каковы были версии каждого из основных браузеров (Google Chrome, Firefox, IE, Safari, Opera и т. Д.), Которые впервые поддерживали его?

Самые ранние поддерживающие браузеры JS поддерживают его.

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