🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #51473

Automatyczne wstawianie średników - pytanie

#51473
From: Piotrek
Date: Wed, 15 Oct 2014 18:06
45 lines
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-mail

Show 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