首页 > 解决方案 > 在函数中存储变量?

问题描述

我在代码中打错了字,但不知何故它仍然有效。

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

我希望得到一个错误,但不知何故它仍然有效。你甚至可以"item"得到stuff[0]. 这里发生了什么?我应该使用这个吗?

标签: javascript

解决方案


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

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

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

使用此代码段,您可以检查函数是否继承自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);


推荐阅读