javascript - 在函数中存储变量?
问题描述
我在代码中打错了字,但不知何故它仍然有效。
let stuffs = [];
function stuff(thing) {
stuff[0] = thing; // should be stuffs[0] = thing;
}
stuff("item");
我希望得到一个错误,但不知何故它仍然有效。你甚至可以"item"
得到stuff[0]
. 这里发生了什么?我应该使用这个吗?
解决方案
在 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);
推荐阅读
- android - 获取在 Android 屏幕解锁之前/之后运行哪些应用程序?
- python-3.x - Django:在 postgres 中的表达式上添加唯一索引
- c - STM32和ADXL345之间的SPI通信
- javascript - 向下滚动后的开玩笑测试没有找到元素
- html - 有没有办法恢复/取消特定区域的背景过滤器?
- keras - Keras / NLP为文本序列中的位置分配权重/更高优先级?
- html - 如何从 HTML 中提取和保存 SVG?
- matlab - 如何在MATLAB中的特定点找到传递函数的幅度和相位
- python - 如何在python3中的fstring中包含关键字
- ruby-on-rails - 从灵活的库存集中有效地选择