To naprawdę nie musi dodawać nowych linii, tylko coś czytelnego.Jaki jest najczystszy sposób na napisanie ciągu wielowierszowego w JavaScript?
Coś lepszego niż to?
str = "line 1" +
"line 2" +
"line 3";
To naprawdę nie musi dodawać nowych linii, tylko coś czytelnego.Jaki jest najczystszy sposób na napisanie ciągu wielowierszowego w JavaScript?
Coś lepszego niż to?
str = "line 1" +
"line 2" +
"line 3";
Niemal identyczna odpowiedź NickFitz za:
var str = [""
,"line 1"
,"line 2"
,"line 3"
].join("");
// str will contain "line1line2line3"
Różnica kod jest nieco bardziej w utrzymaniu, ponieważ linie mogą być ponownie zamawiane bez względu na to, gdzie przecinki. Brak błędów składniowych.
Dzięki temu wykonaj automatyczne łamanie linii, gdy znak łączenia jest \ n. Bardzo przydatny. –
Można zrobić
str = "\
line 1\
line 2\
line 3";
Jak wspomniano w komentarzach, javascript Parsery obsłużyć tego grzywny (działa we wszystkich głównych przeglądarkach), ale nie jest oficjalnie częścią składni ECMA Script. Jako taki może, ale nie musi współpracować ze sprężarkami, kontrolerami błędów i nie może działać w przeglądarkach.
Może to być bardziej czytelne, ale nie jest to "najlepszy" sposób na zrobienie tego. Być może skrypt ECMA będzie obsługiwał coś takiego jak C# 's @ "" pewnego dnia.
Wow. To naprawdę działa. Dzięki Gordon! Nie wiedziałem, że możesz to zrobić w ogóle ... –
czytelny, ale niepoprawny dla parserów błędów js! –
@Thomas: "W każdym przykładzie, który widziałem, wstawiasz także \ after line3." Tylko bc artykuł, który łączyłeś z literówką, nie oznacza, że jest właściwy. przeczytaj resztę artykułu, zrobił to tylko raz, w pierwszym przykładzie. – geowa4
Tak! Możesz use the \ character to have JavaScript ignore end of line characters.
str = 'line 1 \
line 2 \
line 3';
Jednakże, jak pointed out by Elzo Valugi, nie będzie to potwierdzić za pomocą JSLint.
O ile pamiętam, to nie działa w niektórych przeglądarkach. Prawdopodobnie niektóre wersje IE. –
Ionut: Tak, musiałbyś przetestować go we wszystkich przeglądarkach, które Cię interesują, a jeśli miałoby zawieść w przeglądarce, podejrzewam, że to byłoby IE. Ale testowałem to w Firefoksie i działa tam. –
FYI. Sposób, w jaki sugerujesz, jest poprawny i lepszy niż inne odpowiedzi. JsLint zatwierdza tylko twoją wersję.
+1 dla jslint. – geowa4
Wskazówka: pozostaw te linie krótkie. Jeśli rozciągają się poza ekranem, nie widzisz znaku + i staje się on nieczytelny. Lub umieść + na początku linii, jak sugeruje Ionut. –
Konsekwentnie.
Niezależnie od wybranej opcji, zrób to dokładnie w taki sam sposób w całej aplikacji. Jeśli pracujesz nad aplikacją, która ma już napisany kod, zaakceptuj konwencję, którą ustawił i przejdź z nią.
Szkoda, że nie można głosować więcej niż jeden raz. To jest ostateczne rozwiązanie, aby tracić energię i czas na spory w "One Right Way ™", aby robić rzeczy (tak powszechne w naszej branży). – dreftymac
Lubię tę wersję (inny niż twój tylko w formatowaniu kodu):
var str = "line 1"
+ "line 2"
+ "line 3";
Tak - łatwiej to zrozumieć na pierwszy rzut oka. –
to również nie sprawdza. Miałem kiedyś skrypt z jakimś takim html i musiałem go przerobić. –
Musisz uciec z HTML, sposób w jaki napis jest skonstruowany nie ma nic wspólnego z walidacją. –
var str = [
"line 1",
"line 2",
"line 3"
].join("");
// str will contain "line1line2line3"
Jeśli rzeczywiście chcesz newlines w ciągu, a następnie zastąpić .join("")
z .join("\n")
/
ta metoda jest jeszcze szybsza niż alternatywa "str" + "str" konkatenacji czy nie ma znaczenia dla dzisiejszych przeglądarek? Łączenie –
jest szybsze, jeśli masz części do połączenia, ponieważ "+" zostanie wykonane (n-1) razy, tworząc tymczasowe wyniki w każdym kroku. Szczegółowe informacje można znaleźć na stronie http://video.yahoo.com/watch/4141759/11157560 at 23:08 – user123444555621
Mamy skrypt, który tworzy całą stronę przez "str" + "str" i był dość powolny (około 30 sekund strony obciążenie). Zmieniliśmy tak, aby używał systemu dołączania opartego na tablicach i spadł do mniej niż jednej sekundy. Tak, tak, to jest szybsze :) –
Będzie działać tylko w przeglądarkach z obsługą E4X - Szkoda, że nie możemy jej użyć w IE
var str = <><![CDATA[
Look, a multi-line
string! < " // ' ? &
]]></>.toString();
Nie potrzebujesz literału XMLList ('<> ..>'). Możesz po prostu zrobić '. ToString()' –
Testowałeś? Z jakiegoś powodu nie działa w Firefoksie. Zgodnie ze standardem sekcja XMLCDATA to XMLMarkup, w związku z czym jest XMLInitialiser, który powinien być rozpoznawany przez silnik jako PrimaryExpression (?) – user123444555621
To nie jest już obsługiwane w Firefoksie od wersji 17. Nie wierzę, ŻE Dowolna przeglądarka obsługuje teraz. –
Oto jedna z nich, która może być pomocna podczas programowania w przeglądarce Chrome.
function FSTR(f) {
// remove up to comment start and trailing spaces and one newline
s = f.toString().replace(/^.*\/\* *\r?\n/,"");
// remove the trailing */} with preceeding spaces and newline
s = s.replace(/\n *\*\/\s*\}\s*$/,"")
return s;
}
s = FSTR(function(){/*
uniform vec2 resolution;
uniform float time;
void main(void)
{
vec2 p = -1.0 + 2.0 * gl_FragCoord.xy/resolution.xy;
vec2 cc = vec2(cos(.25*time), sin(.25*time*1.423));
...
float color = sqrt(sqrt(dmin))*0.7;
gl_FragColor = vec4(color,color,color,1.0);
}
*/});
ta nie działa dla Firefox, chociaż działa w Chrome.
Przykład użycia będzie do pisania/testowania shaderów webgl. Podczas pracy z tą aplikacją jest o wiele przyjemniej i po później zawsze możesz to zrobić, korzystając z prostego wyrażenia , które konwertuje tę składnię do wersji z różnymi przeglądarkami.
To działa teraz w przeglądarce Firefox i najnowszych przeglądarkach. Zobacz [tę odpowiedź] (http://stackoverflow.com/a/5571069/331508). –
Na pewno przykład na to pytanie jest bardziej czytelny niż odpowiedź @dreftymac nie? –
Pozdrowienia @jasdeepkhalsa. Można na to spojrzeć na dwa sposoby. Powyższy przykład jest zdecydowanie czytelny dzięki temu, że ma mniej znaków. Problem pojawia się, gdy musisz * wchodzić w interakcje * z kodem, dodając lub usuwając linie lub zmieniając kolejność linii. Przykład dreftymac zawiera więcej znaków, ale o wiele łatwiej jest wchodzić w interakcje z kodem bez przypadkowego wywołania błędu składni. – dreftymac