Article View: pl.comp.lang.javascript
Article #51474Re: Automatyczne wstawianie średników - pytanie
From: Jordan Szubert
Date: Wed, 15 Oct 2014 18:11
Date: Wed, 15 Oct 2014 18:11
53 lines
2708 bytes
2708 bytes
Dnia 15-10-2014 o 20:06:16 Piotrek <pilarp@poczta.onet.pl> napisał(a): > W 6. edycji "JavaScript The Definitive Guide", w podrozdziale > 2.5 (Optional Semicolons), znajduje się takie stwierdzenie: > > "JavaScript treats a line break as a semicolon if the next > nonspace character cannot be interpreted as a continuation of > the current statement", > > a zaraz pod nim podany jest taki przykład: > > var a > a > = > 3 > console.log(a) > > Autor twierdzi, że zostanie on zinterpretowany jako: > > var a; a = 3; console.log(a); > > tzn. pierwsza linia będzie niejawnie zakończona średnikiem, > bo bez niego interpreter natrafiłby na niezrozumiały dla niego > ciąg "var a a". > > Taka argumentacja nie przemawia do mnie z dwóch powodów: > > 1. Dlaczego niby 2 pierwsze linie miałyby być bez średnika > zinterpretowane jako "var a a", a nie "var aa" (skąd miałaby > się brać spacja między dwoma "a")? > > 2. Zgodnie z regułką zacytowaną przed przykładem, JavaScript > traktuje koniec linii jako średnik jeśli pierwszy różny > od spacji znak w nowej linii nie może być zinterpretowany > jako kontynuacja bieżącej instrukcji (zakładam, że jest to > równoważność, tzn. jeśli ten warunek nie zachodzi, średnik > nie zostaje automatycznie dodany). > > Skoro tak, to dlaczego rozważany przykład > nie jest rozumiany jako: > > var aa = 3; console.log(a); > > tzn. dlaczego 4 pierwsze linie nie mogą składać się > łącznie na deklarację zmiennej o nazwie "aa", połączoną > z jej inicjalizacją? Pewnie wynika to jakoś z definicji > języka, ale z zacytowanej regułki nie umiem tego wywnioskować. zgadywałbym, że wynika to z tej samej reguły, która sprawia że "var a" i "vara" to są całkiem inne rzeczy -- Jordan Szubert
Technical Details
Message-ID:
<op.xnr942pghilul8@asus7h.home>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<df8855d0-5734-4dee-a9d3-8a149b139a27@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Newsgroups: pl.comp.lang.javascript Subject: Re: Automatyczne wstawianie średników - pytanie References: <df8855d0-5734-4dee-a9d3-8a149b139a27@googlegroups.com> Date: Wed, 15 Oct 2014 20:11:16 +0200 MIME-Version: 1.0 From: "Jordan Szubert" <usenet@joru.us.to> Organization: HELL inc. Message-ID: <op.xnr942pghilul8@asus7h.home> User-Agent: Opera Mail/12.17 (Win32) Lines: 58 NNTP-Posting-Host: 83.27.129.215 X-Trace: 1413396683 unt-rea-a-02.news.neostrada.pl 29616 83.27.129.215:52668 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit