{"id":1200,"date":"2012-05-23T20:48:56","date_gmt":"2012-05-23T18:48:56","guid":{"rendered":"https:\/\/sgaul.de\/?p=1200"},"modified":"2014-03-13T21:34:49","modified_gmt":"2014-03-13T20:34:49","slug":"konstanten-in-javascript","status":"publish","type":"post","link":"https:\/\/sgaul.de\/2012\/05\/23\/konstanten-in-javascript\/","title":{"rendered":"Konstanten in Javascript"},"content":{"rendered":"

Eigentlich ist es keine \u00dcberraschung, wenn eine Programmiersprache Konstanten unterst\u00fctzt. Bei Javascript bin ich zuvor aber nie dar\u00fcber gestolpert: const<\/code><\/strong>.<\/p>\n

Chrome- und Firefox-Verhalten nicht konstant<\/h2>\n

Ich habe mal einen kleinen Test in Chrome und Firefox gemacht. Im Normalfall verhalten sich beide, wie man es erwartet. Versucht man jedoch nachtr\u00e4glich eine Variable in eine Konstante zu verwandeln, reagieren die beiden unterschiedlich: Chrome ignoriert das \u201econst\u201c und setzt den neuen Wert, w\u00e4hrend Firefox einen Fehler meldet und den neuen Wert ignoriert. Zumindest bleibt in beiden F\u00e4llen eine Variable variabel.<\/p>\n

const a = 1;\r\na = 2;\r\nconsole.log(a); \/\/ 1\r\n\r\nconst b = { b : 2 };\r\nb = 3;\r\nconsole.log(b); \/\/ Object { b=2}\r\n\r\nvar c = 3;\r\nconst c = 4; \/\/ Chrome: okay \/ FF: \"TypeError: redeclaration of var c\"\r\nconsole.log(c); \/\/ Chrome: 4 \/ FF: 3\r\nc = 5;\r\nconsole.log(c); \/\/ 5<\/pre>\n

Scoping wie bei var<\/h2>\n

Bei der Sichtbarkeit verh\u00e4lt sich const<\/code> genau wie var<\/code>: Konstanten sind innerhalb von Funktionen beliebig tief sichtbar, au\u00dferhalb jedoch nicht.<\/p>\n

(function() { const c1 = 1; console.log(c1); }()); \/\/ 1\r\nconsole.log(c1); \/\/ ReferenceError: c1 is not defined<\/pre>\n

Ohne Scope werden Konstanten wie auch Variablen eine Eigenschaft des aktuellen Windows:<\/p>\n

const c2 = 2;\r\nconsole.log(window.c2); \/\/ 2<\/pre>\n","protected":false},"excerpt":{"rendered":"

Eigentlich ist es keine \u00dcberraschung, wenn eine Programmiersprache Konstanten unterst\u00fctzt. Bei Javascript bin ich zuvor aber nie dar\u00fcber gestolpert: const.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[91],"tags":[369,158,497,499],"_links":{"self":[{"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/posts\/1200"}],"collection":[{"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/comments?post=1200"}],"version-history":[{"count":4,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/posts\/1200\/revisions"}],"predecessor-version":[{"id":2519,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/posts\/1200\/revisions\/2519"}],"wp:attachment":[{"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/media?parent=1200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/categories?post=1200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sgaul.de\/wp-json\/wp\/v2\/tags?post=1200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}