2012-12-06 15 views
22

Otrzymuję komunikat o błędzie podczas uruchamiania następującego polecenia w dołączonym skrypcie. Ale jeśli uruchomię polecenie z konsoli chrome Google, działa poprawnie.javascript - Uncaught ReferenceError: klucze nie są zdefiniowane

var a = {}; 
console.log(keys(a)); 

Błąd:

Uncaught ReferenceError: keys is not defined 

Co tu się dzieje? Jak mogę korzystać z funkcji keys w dołączonym skrypcie?

+1

Oznacza to, że 'konsola' definiuje funkcję' keys', a twój kod nie. Jakie jest Twoje pytanie? –

+0

Wiele funkcji w javascript jest predefiniowanych. Na przykład właściwość "length". a = [1,2]. a.length zwraca 2. Tutaj klucze to funkcja, która zwraca klucze obiektu w formacie tablicy. Działa, gdy uruchamiam polecenia w konsoli, ale otrzymuję ten błąd, gdy używam funkcji "keys" w pliku skryptu. – user1767962

+1

Dobrze. 'Konsola' definiuje funkcję' keys'. To nie znaczy, że JavaScript działa. –

Odpowiedz

29
console.log(keys(a)) 

keys() nie jest funkcją oferowaną przez przeglądarkę do użycia w kodzie. Prawdopodobnie chcesz Object.keys()

a = {}; 
console.log(Object.keys(a)); 

Czasami konsola posiada dodatkowe funkcje narażonych na nim na łatwość obsługi debugowania, które nie są dostępne w rzeczywistym kodzie. keys() brzmi jak jeden, a copy('some text') to kolejny.

Nie mogę znaleźć linku, który wymienia je, niestety. Ale jestem pewien, że jest ich więcej niż te dwie funkcje.

+4

Zgadzam się, że to pytanie jest konstruktywne. Nie robię dużo Javascriptu i miałem dokładnie to samo pytanie. Mianowicie, "Dlaczego ten błąd pojawia się w funkcji klawiszy, gdy debugowałem tylko debugowanie Chrome 2 sekundy temu w debugerze Chrome?" Teraz wiem. – dlb8685

1

Ilekroć pojawi się taki błąd, spróbuj wyszukać definicję funkcji/zmiennej, która została zgłoszona jako niezdefiniowana. Jeśli jest to zdefiniowane jako, spróbuj wyszukać przyczynę, która może nie działać. Czy wiesz, że funkcja keys jest poza konstruktorem Object? Nie możesz nazwać tego tak, jakby był funkcją wolnostojącą. Chociaż jeśli masz w zwyczaju robić to, spróbuj własną funkcję, aby umożliwić w ten sposób:

function key(object) { 

    return Object.keys(object); 

} 

Kod powinien przechodzą podano definicję takiego.

Powiązane problemy