gpt4 book ai didi

javascript - 为什么没有报segmentation fault

转载 作者:行者123 更新时间:2023-11-30 19:13:48 25 4
gpt4 key购买 nike

考虑

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/

25 4 0
文章推荐: javascript - 在 for 循环中使用 @ref 获取元素引用
文章推荐: c# - 有没有办法在 C# 中完成类似 List list = new List() 的事情?