gds
23.04.2012 11:10 umodniAC41C113
В спеке на javascript ("Ecma-262.pdf") нет ни малейшего указания на то, меняет ли somestring.match(regexp) переменные $1 .. $n (следовательно, не меняет). Интернеты же говорят об обратном.
Даже если не меняет, то какой практический смысл в match, по итогу? Просто проверить, совпадает ли строка с регекспом? Очень смешно.
юзай .exec у регекспа
благодарю, грамотная идея.
вот ещё вопрос, отдельного псто не заслуживающий. В спеке на .exec сказано, что всякая хуйня, которая не матчится из-за (re1|re2), будет undefined, а firebug показывает мне "(void 0)". Это какие-то его личные, firebug'ные приколы, или таки есть разница между этими значениями? По "===" оно сравнивается в true.
хз, похоже на фаербаг
то есть, по идее, тестить эти значения через "x === undefined" и будет всё чотко? (точного ответа не прошу, интуиции будет более чем достаточно)
я бы даже тестил просто по ==
ты же не собираешься пустые строки получать
кстати вот, собираюсь (точнее, сейчас не могу доказать, что пустых строчек не будет). Стало быть, лучше "==="?
лучше проверяй по типу. Если не string, то лесом
понял идею. Как проверять — тоже понял, typeof(). Пока в кодогенерилку запилю таки "x === undefined" с жырным каментом "проверять по типу, если будут проёбы" (потому что даже ""==undefined вычисляется в false, "===" тем более должно, думаю).
Ещё раз выражаю благодарность за помощь в этом вопросе. Опыта в js у меня немного и весьма давно, поэтому вот и спрашиваю всякое.
да ладно, я вообще не видел людей, которые читали бы спецификации языка
да мне западло кодить на js, проще налепить кодогенерилку под нужный функционал (конкретно сейчас — тупой и несложный парсинг, который компилирую в регекспы). А для кодогенерилки что нужно — спеку прочитать, выдернуть оттуда нужное, погуглить на тему "во всех ли браузерах оно работает", и вперде.