Разрешава се интервал преди точка (извикване на метод) в Javascript?

Искам да използвам следния синтаксис в Javascript:

var bar = foo.replace(/really long regex/, something)
             .replace(/another really long regex/, something)
             .replace(/yet another really long regex/, something);

тъй като е (донякъде) по-четливо, отколкото да правите това на един ред.

позволено ли е това Работи добре във Firefox, но не мога да намеря никъде препратка към този синтаксис и не искам да разбера по-късно, че има някакъв неясен браузър, в който това не работи.


person mscha    schedule 10.02.2011    source източник


Отговори (3)


Да, Javascript игнорира интервали.

Въпреки че, ако ще игнорирате интервали, трябва да сте сигурни и да използвате точка и запетая, за да завършите вашите изрази. Точка и запетая не са задължителни, но ако не се използват, javascript използва връщане на каретка за отделни команди. Което може да причини непоследователно поведение, ако не го очаквате.

Правил съм го много пъти в моя javascript код, тъй като когато пиша красив код, не обичам да го оставям да надхвърля 80 знака.

Разгледайте стандарта emcascript https://docs.google.com/viewer?url=http%3A%2F%2Fwww.ecma-international.org%2Fpublications%2Ffiles%2FECMA-ST%2FECMA-262.pdf

Терминаторите на редове (което е това, което ви интересува) са адресирани на страница 25 от pdf (страница 15 е отпечатана на листа). Целият раздел 7 е за форматиране, вероятно ще намерите определение защо работи там (да, мързелив съм и не искам да чета целия раздел :) ).

Надявам се това да помогне!

person ehudokai    schedule 10.02.2011
comment
Благодаря, това си помислих, въпреки че наистина се страхувах, че вмъкването на точка и запетая може да съсипе това. Ще изчакам още малко за по-авторитетен отговор, но иначе ще одобря този отговор. - person mscha; 10.02.2011
comment
@mscha Всъщност се препоръчва да поставяте точка и запетая винаги, когато завършвате израз. Това ви позволява по-късно да използвате минимизатор на код, без интерпретаторът на javascript да се обърква. Вашият код е по-лесен за четене (за целите на отстраняване на грешки), но минимизираният код работи по-бързо, тъй като на интерпретатора на javascript отнема по-малко време, за да го прочете. - person ehudokai; 10.02.2011
comment
@ehudokai: абсолютно, винаги използвам точка и запетая. Въпросът тук е: няма ли някой неясен анализатор на Javascript да вмъкне точка и запетая в средата на моя израз? - person mscha; 10.02.2011
comment
@mscha Не мисля така. Поне за мен никога не е било. Предполагам, че разглежда следващия ред, за да види дали е продължение на предишния израз. И тъй като . не може да стартира израз на javascript, трябва да приеме, че е част от предишния израз. - person ehudokai; 10.02.2011
comment
Това има смисъл, убеден съм. - person mscha; 10.02.2011
comment
Благодаря, добавих връзка към спецификацията на emcascript в моя отговор, за да се надявам да ви дам определено правило за стандарта. - person ehudokai; 10.02.2011
comment
И благодаря за линка към спецификациите. Дори спецификацията е неясна: „По принцип терминаторите на редове могат да се появят между всеки два токена, но има няколко места, където те са забранени от синтактичната граматика“, но не се казва кои са тези места. Разделът за вмъкване на точка и запетая (страница 36/26) обаче помага; той изрично изброява всички места, където не трябва да имате терминатор на ред, и това не е едно от тях. - person mscha; 10.02.2011

Определено можете да направите това, но ще внимавам. За да цитирам записа в wikipedia - "празното пространство в източника на JavaScript може директно да повлияе на семантиката". Вижте Синтаксис на JavaScript - празно пространство и точка и запетая.

person bamana    schedule 10.02.2011
comment
Благодаря за линка. Това го бях видял, но не пише дали моят пример е разрешен. - person mscha; 10.02.2011

Да, не успях да намеря никаква документация, но е валидна. Във вашия случай можете вместо това да преминете през регулярните изрази

person mplungjan    schedule 10.02.2011