首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Node.js
Express
PPA for Ubuntu
ppa:chris-lea/node.js
V2EX  ›  Node.js

node 当变量未定义时, 无任何提示退出

  •  
  •   zsxzy · 316 天前 · 2591 次点击
    这是一个创建于 316 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请教大佬, 我的一个 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
    9 回复  |  直到 2018-06-15 12:41:42 +08:00
        1
    Sparetire   316 天前 via Android   ♥ 1
    应该是报 ReferenceError,未声明的变量你拿来用,报错退出,大部分语言都是如此吧
        2
    zsxzy   316 天前
    @Sparetire 可是直接退出了, 不报任何消息, win 10 的 ubuntu 子系统环境
        3
    sjn9588   316 天前   ♥ 1
    有没有监听 uncaughtException,然后又不打印。加了会覆盖默认的处理。
        4
    jimchen9999   316 天前
    .....因为 if 为 false 所以不执行啊 你看不出来么?
        5
    zsxzy   316 天前
    @jimchen9999 .....

    if (SENT_LIST)
    await readSentFile();

    let csvStream = csv()
    .on("data", function (data) {

    我的意思是, 如果 SENT_LIST 有定义, 会运行后面的代码, 如果没定义, node 啥都不输出, 直接退出了
    至少应该有个错误提示啊
        6
    jimchen9999   316 天前
    没定义 if 不就直接跳过 然后 结束程序了么?
        7
    Sparetire   316 天前 via Android   ♥ 1
    。。居然会有这么多人觉得没定义的变量就是 fakse/undefined,怕不是 js 没学好,规范规定了未声明的变量拿来使用就抛 ReferenceError,基于楼主给出的代码我不会假设作用域链上声明过该变量,那就会是报错,这点应该可以通过 uncaughtException 捕获进行验证,关键是不显示报错,大概率如#3 所说,可能有哪个地方(比如框架)监听了 uncaughtException 却没打印出来
        8
    Sparetire   316 天前 via Android
    @Sparetire 笔误 false。。
        9
    jimchen9999   312 天前
    @Sparetire 我是没学好 见笑了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4138 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 01:50 · PVG 09:50 · LAX 18:50 · JFK 21:50
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1