2012-12-06 15 views
22

我在包含的腳本中運行以下命令時出現錯誤。但是,如果我從谷歌瀏覽器控制檯運行命令,它可以正常工作。javascript - 未捕獲的ReferenceError:密鑰未定義

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是一個以數組格式返回對象鍵的函數。當我在控制檯中運行命令時,它正在工作,但當我在腳本文件中使用「鍵」功能時發生該錯誤。 – user1767962

+1

沒錯。 'console'定義了一個'keys'函數。這並不意味着JavaScript。 –

回答

29
console.log(keys(a)) 

keys()是不是由瀏覽器在代碼中使用所提供的功能。你可能想Object.keys()

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

有時控制檯有接觸到它的易用調試額外的功能不可用在您的實際代碼。 keys()聽起來像一個,copy('some text')是另一個。

我無法找到列出它們的鏈接,很遺憾。但我相當確信這些功能不止這兩項。

+4

我同意這個問題是有建設性的。我不做很多Javascript,只是有這個完全相同的問題。也就是說,「爲什麼當我在Chrome調試器中2秒鐘之前調試過我的代碼時,我在按鍵功能上出現這個錯誤?」 現在我知道了。 – dlb8685

1

每當您遇到像這樣的錯誤時,嘗試搜索被報告爲未定義的函數/變量的定義。如果它定義了,請嘗試查找這可能不起作用的原因。你知道keys函數是Object構造函數的一部分嗎?你不能稱之爲獨立功能。但如果你進入這樣的習慣,儘量使自己的功能,讓這樣的:

function key(object) { 

    return Object.keys(object); 

} 

你的代碼應該傳遞給這樣的定義。

相關問題