25.07.2012, 07:42
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от Дзен-трансгуманист
|
Тогда уж так:
|
и в чем тут разница? что-то понять не могу
|
|
25.07.2012, 16:08
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от devote
|
и в чем тут разница? что-то понять не могу
|
очередная особенность FF
|
|
25.07.2012, 16:14
|
Профессор
|
|
Регистрация: 31.05.2012
Сообщений: 396
|
|
Сообщение от bes
|
очередная особенность FF
|
Спецификация ECMAScript запрещает использование объявлений функций внутри блоков, в том числе switch, if, try и др. Все объявления функции должны находиться непосредственно в коде верхнего уровня, коде функции или коде eval.
Поэтому оба кода, приведенные выше, являются невалидными, хотя браузер не выдаёт ошибку.
|
|
25.07.2012, 16:26
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от oneguy
|
Поэтому оба кода, приведенные выше, являются невалидными, хотя браузер не выдаёт ошибку.
|
И более того - исполняет (кроме FF в первом примере)
|
|
25.07.2012, 16:30
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
oneguy,
ты какую там спецификацию то смотришь родной? а то прям любишь тыкать на нее, да вот аргументов нет.. Читай внимательно спецификацию, что бы дураком перед другими не казаться:
"use strict";
try {
var i = 0;
function a () { i++; a(); }
a();
}
catch (e) {
alert('ваш ёбаный стек равен каким-то сраным: '+i+' вызовам');
}
спецификация запрещает это делать в строгом режиме
|
|
25.07.2012, 16:39
|
Профессор
|
|
Регистрация: 31.05.2012
Сообщений: 396
|
|
Да, сейчас я аргументирую своё утверждение с помощью спецификации.
Спецификация запрещает объявлять функции внутри блоков в любом режиме, не только строгом.
http://es5.javascript.ru/x12.html#x12 - здесь приведен список возможностей для Statement и в нём нет FunctionDeclaration.
Там же приводится замечание, касающееся нашей темы.
Цитата:
|
ПРИМЕЧАНИЕ Известно, что несколько широко распространённых реализаций языка ECMAScript поддерживают использование FunctionDeclaration Объявление функции в качестве инструкции. Однако в семантике, применимой к таким объявлениям функций, имеются существенные противоречивые вариации реализаций. Из-за этих противоречий код, написанный с использованием FunctionDeclaration в качестве Statement, не является надёжным при переносе из одной реализации в другую. Поэтому для реализаций ECMAScript рекомендуется либо отключать использование FunctionDeclaration, либо генерировать предупреждение в случае такого использования. Возможно, в последующих версиях языка ECMAScript появятся альтернативные средства для переноса кода, позволяющие объявлять функции в контексте Statement.
|
|
|
25.07.2012, 16:40
|
Кандидат Javascript-наук
|
|
Регистрация: 01.08.2009
Сообщений: 102
|
|
Сообщение от Дзен-трансгуманист
|
Maxmaxmахimus,
Тогда уж так:
try {
var i = 0;
function a () { i++; a(); }
a();
}
catch (e) {
alert('ваш ёбаный стек равен каким-то сраным: '+i+' вызовам');
}
А то в твоем варианте получается 0.
|
Ваш код загрузил мой Firefox 11 так, что он завис.
Код:
|
Похоже, исполняемый на этой странице сценарий занят или не отвечает. Вы можете остановить его сейчас или продолжить и посмотреть, сможет ли он завершить свою работу.
Сценарий: resource://firebug/firebug-service.js:3253 |
|
|
25.07.2012, 16:42
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
devote, я считаю, что у oneguy правильный подход, куда ещё тыкаться как не в спецификацию, только надо ссылку кидать, где в спецификации эта информация (спецификация-то большая).
|
|
25.07.2012, 16:44
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
oneguy,
а может стоит читать официальные документы а не чейто перевод? я понимаю что Илья переводил, и все такое. Но английский это язык который каждый понимает по своему. И читать, а темболее утверждать надо по официальным документам а не по тем что кем-то переведены не официально.
|
|
25.07.2012, 16:44
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от bes
|
только надо ссылку кидать, где в спецификации эта информация (спецификация-то большая).
|
ссылку надо кидать на оригинал
|
|
|
|