javascript - 在函数中存储变量?

标签 javascript

我在代码中犯了一个拼写错误,但它仍然有效。

let stuffs = [];
function stuff(thing) {
  stuff[0] = thing; // should be stuffs[0] = thing;
}
stuff("item");

我预计会出现错误,但不知何故它仍然有效。 您甚至可以使用 stuff[0] 获取 "item"。这里发生了什么?我应该使用这个吗?

最佳答案

在 JavaScript 中,几乎所有具有结构的东西都继承自 Object。

在 JavaScript 中,对象可以拥有任何属性。

通过这些语句,您可以看到函数实际上是一个对象,因此您可以为其设置所有您想要的属性,就像一个简单的{} (有一些限制,因为函数具有普通对象所没有的另一组属性)。

通过此代码片段,您可以检查函数是否继承自 Object

function myFunc() {
    // empty! :-)
}

console.log("Func inherits from Object:", myFunc instanceof Object);
console.log("Array inherits from Object:", [] instanceof Object);
console.log("Object inherits from Object:", {} instanceof Object);
console.log("constant string inherits from Object:", "test" instanceof Object);
console.log(" * constant string DON'T inherits from Object but...");
console.log("String constructor inherits from Object:", String instanceof Object);

关于javascript - 在函数中存储变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56028334/

相关文章:

javascript - ExecJS - Ruby 中的 Javascript 对象实例?

javascript - 为 Web 应用程序仅组合必要的 css 和 js 的任何好方法

javascript - 用 Cypress 解析 pdf

javascript - Botmaker 解决 Qnamaker 后续问题

javascript - 用于查找值的按钮和 getElementsByName

javascript - 如何将文本放在图像上

javascript - Uncaught ReferenceError : Alpine is not defined

javascript - 根据屏幕大小隐藏 html 标签/内容

javascript - 扩展和删除工具栏按钮

javascript - 在 div 中重现 Bootstrap 导航栏行为的 css 解决方案