我在代码中犯了一个拼写错误,但它仍然有效。
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/