考虑
const a = [1,2,3]
console.log(a[5]) // returns undefined
我是一名 C 和 Fortran 程序员,我预计会发生段错误。这里的内存是如何管理的? Node 是环境。
最佳答案
在 Javascript 中,a[n]
是许多抽象层,解析为类似的东西:
struct JsType *array_get(struct JsType *a, struct JsType *n) {
struct JsArray *array = coerceTo(a, TYPE_ARRAY);
struct JsInt *index = coerce(n, TYPE_INTEGER);
if (array->length > index || index < 0) {
return (struct JsType *) JSTYPE_UNDEFINED;
}
return array->contents[index->value];
}
地点:
coerceTo
是一个函数,它可以将可能相似的值转换为可用值,例如将字符串转换为整数(这意味着您可以使用字符串化整数作为数组索引),或者返回给它的值,如果它已经有了我们想要的类型。
JSTYPE_UNDEFINED
是 Javascript 的 undefined
的全局常量
struct JsType
是一个结构,Javascript 中使用的所有类型都由该结构组成,并且可以转换为。
关于javascript - 为什么没有报segmentation fault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58205335/