Nodejs 当变量未定义时, 无任何提示退出
Nodejs 当变量未定义时, 无任何提示退出
请教大佬, 我的一个 js 程序, use strict 模式下,
如果把下面这行注释掉,
let SENT_LIST = process.argv.slice(2)[4];
当这段代码访问 SENT_LIST , node 直接退出, 没任何提示, 这是为什么?
if (SENT_LIST) {
await readSentFile();
}
ENV: node v8.11.2, ubuntu 18.04
应该是报 ReferenceError,未声明的变量你拿来用,报错退出,大部分语言都是如此吧
可是直接退出了, 不报任何消息, win 10 的 ubuntu 子系统环境
有没有监听 uncaughtException,然后又不打印。加了会覆盖默认的处理。
…因为 if 为 false 所以不执行啊 你看不出来么?
…
if (SENT_LIST)
await readSentFile();
let csvStream = csv()
.on(“data”, function (data) {
我的意思是, 如果 SENT_LIST 有定义, 会运行后面的代码, 如果没定义, node 啥都不输出, 直接退出了
至少应该有个错误提示啊
没定义 if 不就直接跳过 然后 结束程序了么?
。。居然会有这么多人觉得没定义的变量就是 fakse/undefined,怕不是 js 没学好,规范规定了未声明的变量拿来使用就抛 ReferenceError,基于楼主给出的代码我不会假设作用域链上声明过该变量,那就会是报错,这点应该可以通过 uncaughtException 捕获进行验证,关键是不显示报错,大概率如#3 所说,可能有哪个地方(比如框架)监听了 uncaughtException 却没打印出来
笔误 false。。
我是没学好 见笑了
在Node.js中,当尝试访问一个未定义的变量时,通常不会直接抛出错误或提示,而是会返回undefined
,这可能会导致一些难以追踪的bug,尤其是当这个变量被用于后续的逻辑或计算时。不过,可以通过一些方法来捕获和处理这类情况。
一种常见的方法是使用JavaScript的严格模式(strict mode),它会在尝试访问未定义的变量时抛出错误。你可以通过在脚本的顶部添加"use strict";
来启用严格模式。
示例代码:
"use strict";
// 尝试访问未定义的变量
let a = b; // 这将抛出一个ReferenceError
console.log(a);
运行上面的代码,你会看到Node.js抛出了一个ReferenceError
,提示b
未定义。
另外,你也可以在代码中添加一些检查来避免访问未定义的变量。例如,使用typeof
操作符来检查变量是否已定义:
let a;
if (typeof someUndefinedVariable !== 'undefined') {
a = someUndefinedVariable;
} else {
console.error('变量未定义');
// 可以设置一个默认值或其他错误处理逻辑
a = '默认值';
}
console.log(a);
在这个例子中,如果someUndefinedVariable
未定义,代码会输出错误信息并设置一个默认值。
总之,通过启用严格模式或添加适当的检查,你可以更容易地捕获和处理Node.js中未定义变量的问题。