39

在包含的脚本中运行以下命令时出现错误。但是如果我从谷歌浏览器控制台运行命令,它就可以正常工作。

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

错误:

 Uncaught ReferenceError: keys is not defined 

这里发生了什么?如何keys在包含的脚本中使用该函数?

4

2 回答 2

46
console.log(keys(a))

keys()不是浏览器提供的用于您的代码的功能。你可能想要Object.keys()

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

有时,控制台会暴露一些额外的功能,以便于调试,而这些功能在您的实际代码中是不可用的。keys()听起来像一个,又copy('some text')是另一个。

遗憾的是,我找不到列出它们的链接。但我很确定不止这两个功能。

于 2012-12-06T19:39:13.923 回答
1

每当您遇到这样的错误时,请尝试搜索报告为未定义的函数/变量的定义。如果定义,请尝试寻找可能无法正常工作的原因。你知道keys函数是Object构造函数的一部分吗?你不能把它当作一个独立的函数来调用。虽然如果您养成这样做的习惯,请尝试制作自己的函数来允许这样做:

function key( object ) {

    return Object.keys( object );

}

您的代码应该通过给定这样的定义。

于 2012-12-06T19:42:22.437 回答