2012-12-06 5 views
22

含まれているスクリプトで次のコマンドを実行するとエラーが発生します。しかし、Google Chromeのコンソールからコマンドを実行すると、正常に動作します。javascript - Uncaught ReferenceError:keys is defined

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

エラー:

Uncaught ReferenceError: keys is not defined 

ここで何が起こっていますか?付属のスクリプトでkeys関数を使用するにはどうすればよいですか?

+1

これは、 'console'が' keys'関数を定義し、あなたのコードがそうでないことを意味します。あなたの質問は何ですか? –

+0

javascriptの多くの関数があらかじめ定義されています。たとえば 'length'プロパティです。 a = [1,2]。 a.lengthは2を返します。ここで、keysはオブジェクトのキーを配列形式で返す関数です。コンソールでコマンドを実行しても、スクリプトファイルで 'keys'機能を使用しているときにエラーが表示されたときに動作しています。 – user1767962

+1

右。 'console'は' keys'関数を定義します。それはJavaScriptが意味するものではありません。 –

答えて

29
console.log(keys(a)) 

keys()は、コードで使用するためのブラウザでは機能しません。おそらく、Object.keys()

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

は時々コンソールは、あなたの実際のコードでは使用できない使用のデバッグを容易にするため、それにさらされ、余分な機能を持っていたいです。 keys()は同じように聞こえ、copy('some text')は別のものです。

私は悲しいことにそれらをリストするリンクを見つけることに失敗しています。しかし、私はこれらの2つ以上の機能があると確信しています。

+4

私はこの質問が建設的であることに同意します。私はたくさんのJavascriptをやっておらず、まったく同じ質問をしています。つまり、「Chromeデバッガで2秒前にコードをデバッグしただけで、キー機能でこのエラーが発生するのはなぜですか?」 今私は知っています。 – dlb8685

1

このようなエラーが発生した場合は、未定義として報告されている関数/変数の定義を検索してみてください。 である場合は、これが機能していない可能性がある理由を調べてください。 keys関数がObjectコンストラクタの一部であることを知っていますか?自立しているかのように呼び出すことはできません。あなたがこれを行うのが習慣に取得する場合けれども、これを許可するために、独自の機能を作ってみてください。

function key(object) { 

    return Object.keys(object); 

} 

あなたのコードは次のような定義を与えて渡す必要があります。

関連する問題