海底椰是什么| 椅子像什么| 钾偏低是什么原因| 曹操为什么杀华佗| 2h是什么意思| 外痔疮有什么症状| 沙棘不能和什么一起吃| 血栓吃什么药可以疏通血管| 什么是肛漏| 馒头逼是什么意思| a1微球蛋白偏高说明什么意思| 梦见瓜是什么意思| 1979年属什么生肖| 痛风有什么症状| 吃花生米是什么意思| 黄体破裂是什么原因造成的| 你为什么爱我| meshor是什么牌子的手表| 六月六是什么节日| 改良是什么意思| 感冒拉肚子吃什么药| 男性检查hpv挂什么科| 血压低吃什么补血| 吃芥末有什么好处| 什么是虫草| 白气是什么物态变化| 阿胶的原料是什么| 饴糖是什么糖| 血压低会导致什么后果| 戴尾戒是什么意思| 吃核桃有什么好处和坏处| 子宫肌瘤做什么检查能查出来| 吃鱼眼睛有什么好处| 老虎下山下一句是什么| 吃东西恶心想吐是什么原因| 鼻子突然流血是什么原因| 故友是什么意思| 眼皮发黑是什么原因| 黑眼袋是什么原因引起的| 心衰吃什么药效果最好| 黄鳝喜欢吃什么| 下午3点到4点是什么时辰| 随诊什么意思| belle什么意思| 刚刚邹城出什么大事了| 通透是什么意思| 杏仁有什么功效和作用| 糖耐量是什么| 七月份吃什么水果| 非洲是什么人种| 脾切除后有什么影响和后遗症| 尿肌酐低是什么原因| 属猪的五行属什么| 每天喝一杯豆浆有什么好处| 风度是什么意思| 佝偻病是什么症状| 南京市徽为什么是貔貅| 什么是阴阳水| 杜仲有什么功效| 治疗舌苔白厚用什么药| 耳朵发热是什么原因| 排异是什么意思| 舌头尖麻木是什么原因| 肝内胆管结石是什么意思| 贝贝什么意思| 梁下放床有什么禁忌| 孕妇吃葡萄对胎儿有什么好处| 你想吃什么| 维生素b12又叫什么| 做梦买房子是什么预兆| 当家做主是什么生肖| 手脚浮肿是什么原因引起的| 血色素低是什么原因| 吃什么可以增强硬度| 农历十月份是什么星座| 吃什么可以化掉息肉| 2月6日什么星座| 粗人是什么意思| 白水晶五行属什么| 南京有什么山| 自锁是什么意思| 湿疹是由什么引起的| 呼吸性碱中毒吃什么药| 妇乐颗粒的功效能治什么病| 情人总分分合合是什么歌| 狗吃什么食物| 股票roe是什么意思| px是什么意思| 亲情是什么意思| 脸上突然长斑是什么原因引起的| 血糖为什么会高| 排骨炖什么补血补气| 素金是什么意思| 吃你鲍鱼是什么意思| 酋长是什么意思| 巴基斯坦是什么语言| 嘴唇变厚是什么原因| 花木兰属什么生肖| 过敏涂什么药膏| 绽开什么| 举牌是什么意思| 指甲疼是什么原因| 掉头发缺什么维生素| 叶芽是什么| 有容乃大什么意思| 吃燕麦片有什么好处| 遥遥相望是什么意思| 风雨交加是什么生肖| 尿多是什么回事| 什么长而去| 什么数字最听话| 抽脂有什么风险和后遗症| 女人在什么时候最想男人| 胖次是什么意思| 嗜酸性粒细胞偏高是什么原因| 心脏看什么科| 看心脏病挂什么科| 婴儿游泳有什么好处和坏处| 男人结扎有什么好处| 梦见被狗追是什么意思| 九四年属什么生肖| 喝什么茶可以降尿酸| 耳石症什么症状| 南柯一梦是什么意思| 吃什么提神醒脑抗疲劳| 牙齿贴面是什么意思| 马口鱼是什么鱼| 兵马俑是什么意思| 梦见小女孩是什么意思| 为什么叫五七干校| 性激素六项什么时候查| 医生为什么用肥皂洗手| 孕吐什么时候结束| 孕妇感冒吃什么药| 白腊金是什么意思| 什么的海藻| 查肝胆胰脾肾挂什么科| 男性阴囊瘙痒是什么病| 三分三是什么药| 女人排卵是什么时候| 便秘吃什么可以调理| 四川人喜欢吃什么| 耳垂后面疼是什么原因| 985是什么意思| 右眼皮跳是什么原因| 老有痰是什么原因| 什么是假性近视眼| 改姓需要什么手续| 绿豆配什么打豆浆最好| 拉肚子发热是什么情况| 月亮是什么星| 大面念什么| 快乐源泉是什么意思| 紫荆花代表什么生肖| 18岁属什么的生肖| 紫苏长什么样子图片| 10月15号是什么星座的| 便秘缺什么维生素| 阑尾炎是什么| 女人白带多什么原因| 钮祜禄氏是什么旗| 梦见掉了一颗牙齿是什么征兆| 益生菌什么时间吃最好| 冥想什么意思| 过敏性皮炎用什么药膏| 肛塞有什么作用| 燕窝什么季节吃最好| 出球小动脉流什么血| 尿蛋白质阳性是什么意思| 吽是什么意思| 什么叫生理需求| 嘴唇发黑是什么原因| 山竹吃了有什么好处| 蹭饭是什么意思| 什么叫钙化了| XXJ什么意思| 汤力水是什么| 载波是什么意思| 胀气吃什么食物好| 康熙雍正乾隆是什么关系| 无功无过是什么意思| 上海是什么中心| 十三点是什么意思| dbm是什么单位| 宝宝拉肚子挂什么科| 自来鸟是什么兆头| 疳积是什么| 心跳突然加快是什么原因| 五月十六是什么星座| 什么大| 大陆去台湾需要什么手续| 婴儿呛奶是什么原因引起的| 胸口疼痛是什么原因| 硅胶是什么材质| 什么争什么斗| 水光针是什么| 梦见黄狗是什么意思| 吃什么食物养胃| 永加一个日念什么| 中国海警是什么编制| 三铵复合肥是什么| 三点水一个半读什么| 什么的枝叶| 梦见芹菜是什么意思| 左手小指和无名指发麻是什么原因| 585是什么金| 四个月宝宝可以吃什么辅食| 谷氨酸是什么| 175是什么码| 94年是什么命| 舌苔厚白用什么泡水喝| 弱的部首是什么| 白粉是什么| gina是什么意思| 荔枝有什么寓意| 侯字五行属什么| 微笑是什么| 大便带血是什么原因男| 月经第三天属于什么期| 三月20号是什么星座| ph是什么意思| 喝鲜牛奶有什么好处和坏处| 养膘是什么意思| 1月13是什么星座| roger是什么意思| 孕妇血糖高可以吃什么水果| 巩加虫念什么| 老师为什么叫老师| pd990是什么金| 莲子吃了有什么好处| 北京市副市长是什么级别| 为什么会胃出血| 二道贩子是什么意思| 什么叫物质| 川字属于五行属什么| 血压高是什么原因引起的| 为什么邓超对鹿晗很好| 脘痞什么意思| 腺肌症吃什么药| 分水岭是什么意思| 滑膜炎用什么膏药好| 为什么会排卵期出血| 胃反酸水吃什么药| 芒果不能和什么一起吃| 下作是什么意思| 血糖高吃什么能降糖| pt指什么| 中午吃什么| 皮下出血小红点是什么原因造成的| 什么时候血压最高| 考试前紧张吃什么药最好能缓解| 睚眦必报是什么意思| tct是什么| 综合内科是看什么病| 冬枣是什么季节的水果| dw手表是什么档次| 脑出血挂什么科| 让心归零是什么意思| 胃子老是胀气是什么原因| 眼角痛什么原因| 衄血是什么意思| 排骨炒什么配菜好吃| 大便很粗是什么原因| 小腿浮肿吃什么药最好| 百度Zum Inhalt springen

下周3只新股发行 预计募资19亿元

aus Wikipedia, der freien Enzyklop?die
百度 三是行业配套设施开始不断完善,技术和产业共同的标准基本确立。

Automatic semicolon insertion (englisch für automatische Semikolon-Einfügung, kurz ASI) bezeichnet ein Verhalten des JavaScript-Parsers. Die meisten Anweisungen in JavaScript werden durch ein Semikolon abgeschlossen. In vielen F?llen muss dieses Semikolon jedoch nicht explizit im Quelltext angegeben werden, da es der Parser von sich aus erg?nzt. Das Verhalten ist umstritten, da es einerseits das Programmieren erleichtert, indem viele Semikola ausgelassen werden k?nnen, andererseits in Spezialf?llen zu unerwartetem Verhalten und damit zu schwer zu entdeckenden Programmierfehlern führen kann.

Die automatic semicolon insertion ist im ECMAScript-Standard festgelegt und gilt damit neben JavaScript auch für ActionScript. In den folgenden F?llen fügt der Parser automatisch ein Semikolon ein:[1]

  • Der Parser st??t auf ein unerwartetes Token und dieses Token ist
  • Der Parser st??t an das Ende des Quelltextes, obwohl die Grammatik dies nicht erlaubt.
  • Der Parser st??t auf ein Token, das vom vorherigen Token durch einen Zeilenumbruch getrennt ist, das mit diesem aber eine Anweisung bilden würde, innerhalb der ein Zeilenumbruch explizit verboten ist. Dies trifft etwa auf return rueckgabewert zu, hier ist zwischen dem Schlüsselwort return und dem Rückgabewert kein Zeilenumbruch erlaubt.

Das Semikolon wird vor dem unerwarteten Token bzw. vor dem Ende des Quelltextes eingefügt. Ein Semikolon, das nach diesen Regeln automatisch eingefügt würde, wird dennoch nicht eingefügt, falls einer der beiden folgenden F?lle zutrifft:

  • Das eingefügte Semikolon bildet eine leere Anweisung.
  • Das eingefügte Semikolon wird eines der beiden Semikola im Kopf einer For-Schleife.

Bei einzeiligen Kommentaren geh?rt der Zeilenumbruch, der den Kommentar abschlie?t nicht zum Kommentar dazu, stellt also einen Zeilenumbruch im Sinne der obigen Regeln dar. Mehrzeilige Kommentare werden ebenfalls wie Zeilenumbrüche behandelt. Das eingefügte Semikolon steht nach dem Zeilenumbruch, w?hrend ein explizit angegebenes Semikolon meist ans Ende der Zeile gesetzt wird; dies macht jedoch für den Parser keinen Unterschied.

Die Anweisungen, in denen ein Zeilenumbruch verboten ist, sind die Postinkrement- und -dekrementoperatoren, continue und break mit Label, sowie return und throw mit Rückgabewert. Mit der Version 6 von ECMAScript kommen noch yield und die Pfeilnotation hinzu.

In den folgenden Beispielen stehen a, b, c und d für Variablen, foo(), bar() und baz() für Funktionen, und print() für eine Methode von Zahlen.

Der Normalfall, für den die automatic semicolon insertion gedacht ist, zeigt sich im folgenden Code:

{ foo()
bar() } baz()

Dies widerspricht eigentlich der Syntax von ECMAScript, wird aber durch das automatische Einfügen von Semikola zu folgendem korrektem Code:

{ foo()
;bar() ;} baz();

In folgendem Code wird kein Semikolon erg?nzt:

a =   b
    + c
    + d;

Der Code ist n?mlich gültig, ohne dass bei den Zeilenumbrüchen Semikola erg?nzt werden. Dies erlaubt es, lange Codezeilen auf mehrere Zeilen zu verteilen.

In einigen F?llen führt das Weglassen von Semikola zu Syntaxfehlern, wenn diese nicht wie erwartet erg?nzt werden:

if (a > b)
else c = d

Hier wird nach der ersten Zeile kein Semikolon erg?nzt, da dieses eine leere Anweisung ergeben würde. Damit verursacht das else einen Syntaxfehler. Zur Korrektur müsste das Semikolon (oder ein leerer Block) explizit erg?nzt werden. Natürlich k?nnte die if-Konstruktion in diesem Fall auch umgestellt werden um das Problem zu vermeiden.

Ein problematisches Verhalten der automatic semicolon insertion zeigt sich im folgenden Beispiel:

return
  a + b;

Da direkt nach return kein Zeilenumbruch zul?ssig ist, ist dieser Code gleichbedeutend zu:

return;
a + b;

Statt der Summe a + b wird also nichts (undefined) zurückgegeben. Dieser Fehler kann leicht übersehen werden. Wird ein langer Rückgabewert also auf mehrere Zeilen aufgeteilt, so muss der Anfang in der gleichen Zeile wie return stehen, folgender Code w?re korrekt:

return a
     + b;

Ein ?hnlich unerwarteter Fehler entspringt dem folgenden Code:

a = b + c
(c + d).print()

Hier sollte eigentlich in zwei Anweisungen zun?chst die Summe b + c in a gespeichert werden, dann die print()-Methode auf die Summe c + d angewendet werden. Tats?chlich aber wird zwischen den beiden Zeilen kein Semikolon erg?nzt, da die Syntax auch ohne dieses stimmt. Der Code wird also behandelt wie:

a = b + c(c + d).print();

Es wird also versucht c als Funktion mit dem Argument c + d aufzurufen, vom Rückgabewert die Methode print() aufzurufen und dieses Ergebnis zu b zu addieren um diese Summe in a zu speichern. Dies wird h?chstwahrscheinlich einen Laufzeitfehler ausl?sen, in jedem Fall aber nicht zum erwarteten Ergebnis führen. Ein ?hnliches Problem kann sich ergeben, wenn eine Zeile mit einem regul?ren Ausdruck beginnt, der mit der vorherigen Zeile als Division interpretiert werden kann.

Douglas Crockford bezeichnet die automatic semicolon insertion als einen ?furchtbaren Designfehler“ von JavaScript und empfiehlt von wenigen Ausnahmen abgesehen, das Semikolon immer explizit anzugeben.[2] JSLint und ?hnliche Hilfsmittel zur Stilkontrolle warnen in der Regel, wenn ein Semikolon automatisch eingefügt würde.

Auf der anderen Seite gibt es auch Programmierer, die die automatic semicolon insertion gerne nutzen. Um unerwartete Fehler zu vermeiden k?nnen Zeilen, die mit einer Klammer oder einem regul?ren Ausdruck beginnen, ein Semikolon vorangestellt werden.[3] So wird vermieden, dass nach dem Verschieben von Codezeilen an eine andere Stelle ein ursprünglich explizit gesetztes Semikolon nicht mehr an der notwendigen Stelle steht.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Ecma-262 Edition 5.1, The ECMAScript Language Specification. 7.9: Automatic Semicolon Insertion
  2. Douglas Crockford: Das Beste an JavaScript. O’Reilly-Verlag, 2008. ISBN 978-3-89721-876-5. S. 103, 109f., 127f.
  3. inimino: JavaScript Semicolon Insertion: Everything you need to know. (Memento vom 2. Oktober 2017 im Internet Archive) Ver?ffentlicht am 28. Mai 2010, abgerufen am 2. Februar 2015.
查血管堵塞做什么检查 正方形体积公式是什么 额头上长斑是什么原因造成的 老人住院送什么东西好 CHANDO是什么牌子的化妆品
diamond是什么牌子 脸上长疙瘩是什么原因 深海鱼油起什么作用 酸豆角炒什么好吃 男生第一次是什么感觉
25周岁属什么生肖 痔疮可以吃什么 911是什么电话 慢性胃炎吃什么药效果好 冲锋什么
对乙酰氨基酚片是什么药 rna检测是什么意思 手术拆线挂什么科 显怀是什么意思 一落千丈是什么生肖
酸汤鱼用什么鱼hcv8jop8ns4r.cn 人活着有什么意思wmyky.com 和衣是什么意思hcv9jop6ns9r.cn 宋威龙什么星座hkuteam.com 脐带绕颈有什么症状hcv9jop1ns1r.cn
cr医学上是什么意思hcv8jop0ns8r.cn 排尿困难是什么原因hcv8jop2ns4r.cn 什么原因导致宫外孕hcv9jop6ns0r.cn gravy是什么意思hcv7jop7ns1r.cn 上火是什么意思hcv9jop1ns5r.cn
红豆和赤小豆有什么区别dayuxmw.com 赤者念什么hcv9jop3ns4r.cn 28.88红包代表什么意思hcv8jop3ns1r.cn 吃什么好消化hcv8jop1ns5r.cn 蚝油是用什么做的hcv9jop7ns5r.cn
丁二醇是什么hcv8jop1ns6r.cn aquascutum是什么牌子hcv9jop7ns3r.cn 吃什么减肥快hcv8jop6ns3r.cn 脚气真菌最怕什么hcv9jop7ns9r.cn 天妒英才是什么意思hcv8jop2ns0r.cn
百度