Verzamelingen van JavaScript-grammatica-curiositeiten

In talen is grammatica belangrijk. Dit geldt natuurlijk ook voor programmeertalen, en dus voor JavaScript. Een kleine verschuiving in de positionering van tekens maakt een enorm verschil in de uitkomsten, of sommige constructies kunnen bepaalde eigenschappen hebben, terwijl andere dat niet kunnen, ook al kun je ze bijna op dezelfde manier gebruiken.

Dit werd echt met de hand gegolfd, heel snel, maar het wordt allemaal snel logisch. Belofte. In dit bericht staat een verzameling tweets met voorbeelden van curiosa en weetjes van JavaScript, en een uitleg waarom het zo is en welke grammaticale regels er zijn.

Vernietigende blokverklaringen

Niete : hier is de naamgeving een beetje vereenvoudigd (ook onnauwkeurig). Hoewel een blok een bereik kan zijn bij gebruik van let en const , is het in dit geval niet omdat de let buiten de block-instructie valt. Ook meer specifiek maken we er een uitdrukking-statement van (een uitdrukking die op zichzelf staat als een statement), niet alleen een uitdrukking.

Bekijk aanvullende informatie over terminologie en grammaticale namen.

Anonieme functies en namen afleiden

Dit is niet zozeer een grammaticale fout of dubbelzinnigheid, maar een interessant feit over functienamen in JavaScript. Vanaf nieuwere versies van JavaScript krijgen functies afgeleide namen van de variabelenaam. En dit werkt perfect bij het gebruik van functie-expressies op variabele instantiaties, maar je krijgt nog steeds anonieme functies als je naamloze functie-expressies gebruikt waar je geen variabelenaam hebt. Dit geldt voor zowel pijlfuncties als reguliere functie-expressies. Het verschil is dat reguliere functie-expressies de kracht hebben om een ​​naam te krijgen – en dus de stacktracering verrijken en foutopsporing verbeteren.

Pijlfuncties met gelabelde uitspraken

Dit is een heel typisch voorbeeld van waar het niet gemakkelijk is om te zien wat er aan de hand is. De combinatie van twee grammaticale regels maakt het extra moeilijk om onderscheid te maken. Als extra bonus is dit ook moeilijk te debuggen omdat er geen gegenereerde fouten zullen optreden, omdat het de strikt correcte grammatica is (maar semantisch niet al te logisch is).

Functie groter van of gelijk aan

Nog een typisch voorbeeld, maar in dit geval is het gewoon een personage dat er eentje naast zit. Het is gemakkelijk om miss-time typen uit te voeren en & gt; komen na de = in de conditie, en het kan een ontwijkende fout zijn als je even langs kijkt. Dit verandert hoe dan ook de semantiek volledig en zal hetzelfde zijn als het helemaal niet hebben van de if-instructie. En het kan moeilijk zijn om fouten op te sporen, aangezien het geen fout veroorzaakt, technisch correcte grammatica, maar niet doet wat u van plan bent.

In dit bericht hebben we enkele voorbeelden gezien van waar grammaticale regels de uitkomst van uw aanvraag kunnen veranderen. Het ziet eruit als iets, maar is echt iets anders. Het is belangrijk om te weten hoe het werkt om dit te voorkomen en uzelf de moeite van vervelende foutopsporing te besparen. Sommige hiervan kunnen worden voorkomen door linting te gebruiken, maar niet alle. Hoewel het gebruik van dingen als eslint een handig hulpmiddel is, denk ik dat het riskant kan zijn om er alleen op te vertrouwen.