在 JavaScript 中访问 null 值而不使用 null 文字

Access null value in JavaScript without using null literal

提问人:davidchambers 提问时间:5/24/2023 最后编辑:davidchambers 更新时间:5/24/2023 访问量:76

问:

我正在为一种名为 Serif 的新编程语言创建一个转译器。转译器输出 JavaScript 代码。Serif 的语法不包含 null 文字。这带来了一个问题:Serif 旨在与 JavaScript 生态系统互操作,而 JavaScript API 有时使用 null 值。

我正在寻找一种可靠的方法来访问 null 值。我目前正在使用 ,它清楚地表达了我的意图。还有哪些其他选择?我想找到一种不需要函数调用的方法。JSON.parse("null")


在 Serif 中,是一个标识符。除非有阴影,否则提供对 JavaScript null 值的访问。下面的代码演示了 的 Serif 等效项和 JavaScript 输出。nullnullObject.create(null)

example.serif(输入文件)

Object.create null;

示例.js(输出文件)

const null$ = globalThis.JSON.parse("null");
Object.create(null$);

我正在寻找一种更简单的方法来定义输出文件。(如果需要,我正在使用而不是 so 可以用作 Serif 模块中的顶级变量。null$globalThis.JSONJSONJSON

javascript null

评论

1赞 tadman 5/24/2023
做相当于 eval 的设计似乎是一件鲁莽的事情。为什么不有一个返回“null”的核心函数?实现此目的不必有字面意思。
0赞 Mathias 5/24/2023
var myNull = 无效(null);XD的
0赞 davidchambers 5/24/2023
我希望编写 Serif 代码的人能够使用 ,一个常规标识符来引用 null 值。在 JavaScript 代码中,这会减糖为 ,其中从 Serif 的前奏(标准库)导入。问题是如何在前奏中定义,前奏本身就是用衬线写的。nullnull$null$null
0赞 Mathias 5/24/2023
const null = 符号('null');常量 null$ = 符号('null');
2赞 Bergi 5/24/2023
"如何在前奏中定义 null,它本身就是用 Serif 编写的。- 只是不要用 Serif 写(整个)前奏。

答:

0赞 davidchambers 5/24/2023 #1

以下是另外两个计算结果为:null

> /x/.exec("")
null

> "".match(/x/)
null

我发现这些不如.JSON.parse("null")

3赞 Bergi 5/24/2023 #2

JS 规范中返回的操作并不多:null

  1. 每个原型链的最后一个环节,例如 - 我会为您的项目推荐这个,因为这几乎是 JS 中“缺失对象”的定义。Object.getPrototypeOf(Object.prototype)null
  2. “null”字面量,即 .null
  3. 正则表达式匹配,例如 或/[]/.exec("")"".match(/[]/)
  4. JSON解析,例如JSON.parse("null")
  5. 无效日期的 JSON 值,例如new Date(NaN).toJSON()