Article View: pl.comp.lang.javascript
Article #51473Automatyczne wstawianie średników - pytanie
From: Piotrek
Date: Wed, 15 Oct 2014 18:06
Date: Wed, 15 Oct 2014 18:06
45 lines
2653 bytes
2653 bytes
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ć.
Technical Details
Message-ID:
<df8855d0-5734-4dee-a9d3-8a149b139a27@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!uq10no11331192igb.0!news-out.google.com!u5ni2qab.1!nntp.google.com!dc16no3082622qab.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Received: by 10.182.33.162 with SMTP id s2mr9046665obi.17.1413396376217; Wed, 15 Oct 2014 11:06:16 -0700 (PDT) X-Received: by 10.140.20.108 with SMTP id 99mr51634qgi.15.1413396376087; Wed, 15 Oct 2014 11:06:16 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!uq10no11331192igb.0!news-out.google.com!u5ni2qab.1!nntp.google.com!dc16no3082622qab.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.javascript Date: Wed, 15 Oct 2014 11:06:16 -0700 (PDT) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=62.141.228.115; posting-account=TK5l0QoAAAAldQF2560HYsPD7T6zK1l9 NNTP-Posting-Host: 62.141.228.115 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <df8855d0-5734-4dee-a9d3-8a149b139a27@googlegroups.com> Subject: Automatyczne wstawianie średników - pytanie From: Piotrek <pilarp@poczta.onet.pl> Injection-Date: Wed, 15 Oct 2014 18:06:16 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit