2012-12-06 3 views
22

포함 된 스크립트에서 다음 명령을 실행할 때 오류가 발생합니다. 하지만 Google 크롬 콘솔에서 명령을 실행하면 제대로 작동합니다.javascript - Uncaught ReferenceError : 키가 정의되지 않았습니다.

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

오류 : 여기

Uncaught ReferenceError: keys is not defined 

을 무슨 일이야? 포함 된 스크립트에서 keys 함수를 사용하려면 어떻게해야합니까?

+1

그래서'console'은'keys' 함수를 정의하고 코드는 그렇지 않습니다. 질문이 뭐야? –

+0

자바 스크립트의 많은 기능이 미리 정의되어 있습니다. 'length'속성과 같습니다. a = [1,2]. a.length는 2를 반환합니다. 여기에서 keys는 객체의 키를 배열 형식으로 반환하는 함수입니다. 콘솔에서 명령을 실행할 때 작동하지만, 스크립트 파일에서 'keys'기능을 사용할 때 오류가 발생합니다. – user1767962

+1

오른쪽. 'console'은'keys' 함수를 정의합니다. 그렇다고해서 JavaScript가 의미하는 것은 아닙니다. –

답변

29
console.log(keys(a)) 

keys()은 코드에서 사용하기 위해 브라우저에서 제공하지 않습니다. 당신은 아마 콘솔이 실제 코드에서 사용할 수 없습니다 사용하는 디버깅의 용이성을 위해에 노출 된 추가 기능을 가지고 때로는

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

Object.keys()를 원한다. keys()은 하나처럼 들리며 copy('some text')은 다른 것입니다.

저는 슬픈 듯이 그들을 나열하는 링크를 찾지 못했습니다. 그러나 저는이 두 가지 기능 이상이 있다고 확신합니다.

+4

나는이 질문이 건설적인 것에 동의한다. 나는 많은 자바 스크립트를하지 않고이 똑같은 질문을했다. 즉, "Chrome 디버거에서 2 초 전에 코드를 디버깅했을 때 키 기능에서이 오류가 발생하는 이유는 무엇입니까?" 이제 알겠습니다. – dlb8685

1

이와 같은 오류가 발생할 때마다 정의되지 않은 것으로보고 된 함수/변수의 정의를 검색하십시오. 이 정의 된 경우이 작동하지 않는 이유를 찾으십시오. keys 함수가 Object 생성자 중 일부라는 것을 알고 계셨습니까? 독립 함수처럼 호출 할 수 없습니다. 비록 당신이 이것을하는 습관을 갖게된다면 다음을 허용하는 자신 만의 함수를 만들어보십시오 :

function key(object) { 

    return Object.keys(object); 

} 

코드는 다음과 같이 주어진 정의를 통과해야합니다.

관련 문제