2014-11-19 7 views
5

czytanie i majsterkowania z nowych funkcji oferowanych przez ECMAScript 6.usunąć lub nadpisać zmienne const w javascript Harmonia/ECMAScript 6

Nowy „const” oświadczenie na piśmie zmienne stałe jest fajną cechą, która dodaje funkcje już interesująca aktualizacja.

Zmienna jest tworzona jako tylko do odczytu, a po jej stwierdzeniu nie można jej przesłonić.

EDYCJA: Następujący problem pojawia się, na przykład, podczas testowania kodu na konsoli. Uruchomienie skryptu zawierającego definicję const dwa razy, doprowadziłoby do błędu, przerywając wykonanie.

Co jeśli chcę wydać tego słowa kluczowego? Czy istnieje sposób na anulowanie lub usunięcie zmiennej?

Czytałem w this post, że jest to rzeczywiście problem, który wpływa na rachunek var jak dobrze, ponieważ środowiskach, w których zmienne są tworzone są różne na wiele poziomie abstrakcji.

W jaki sposób ECMAScript 6 zamierza rozwiązać ten problem?

+0

Nie ma absolutnie żadnego powodu, aby anulować/usunąć stałą, a zatem nie jest to możliwe w ES6. Dlaczego chcesz to zrobić? – Bergi

+1

Jeśli chcesz to zmienić, dlaczego zadeklarujesz go jako "const"? ECMAScript 6 nie zamierza rozwiązywać tego problemu, ponieważ 'const' to' const'. Możesz zadeklarować inną zmienną o tej samej nazwie w wewnętrznym zasięgu, jeśli chcesz, używając 'let'. –

+1

cóż, na przykład, jeśli przetestuję kod na konsoli, dwukrotne zadeklarowanie const (tj. Ponowne uruchomienie skryptu) spowoduje błąd, co może doprowadzić do odświeżenia strony, marnując wszystkie wprowadzone zmiany w pamięci podręcznej. Właśnie z tego powodu wymyśliłem to pytanie. – Moleskine

Odpowiedz

4

Nie można ponownie zdefiniować zmiennych zadeklarowanych za pomocą const.

Jednak const ma zasięg blokowy. Aby rozwiązać można opisać problem, podczas testowania kodu w konsoli wszystko trzeba by zrobić, to owinąć skrypt w { i }:

{ const x = 1; } 
{ const x = 2; } 

pamiętać, że wiele przeglądarek, które już obsługują słowa kluczowego const nie obsługują stałe blokowe, więc powyższy przykład zakończy się niepowodzeniem w przeglądarce Chrome i Firefox (więcej informacji można znaleźć w artykule Kangax's compatibility table).

+0

Rozumiem, więc mówisz, że nie jest to bezpośrednio możliwe, ale odpowiedź brzmi: zakres, prawda? Ma sens. Wygląda na to, że robią dobry wysiłek, aby rozwiązać problem z zakresu, zarówno z wprowadzeniem let i const. – Moleskine

-3

FYI - const a = {}; var b = new a; a = 33; Właśnie zmieniłem const "a" z powrotem na var.

+0

Przepraszam ... const work = {}; var dd = work; dd = 99; praca = 22; Zwraca 22 i powinien zwrócić to, co kiedykolwiek ustawiłeś, ale domyślnie będzie niezdefiniowanym obiektem. – davidLeak

+1

Nie można przypisać nowej wartości do "const". Taki jest sens posiadania "const". –