V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zsxzy
V2EX  ›  Node.js

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

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

    if (SENT_LIST)
    await readSentFile();

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

    我的意思是, 如果 SENT_LIST 有定义, 会运行后面的代码, 如果没定义, node 啥都不输出, 直接退出了
    至少应该有个错误提示啊
    jimchen9999
        6
    jimchen9999  
       2018-06-11 19:23:25 +08:00
    没定义 if 不就直接跳过 然后 结束程序了么?
    Sparetire
        7
    Sparetire  
       2018-06-12 01:48:34 +08:00 via Android   ❤️ 1
    。。居然会有这么多人觉得没定义的变量就是 fakse/undefined,怕不是 js 没学好,规范规定了未声明的变量拿来使用就抛 ReferenceError,基于楼主给出的代码我不会假设作用域链上声明过该变量,那就会是报错,这点应该可以通过 uncaughtException 捕获进行验证,关键是不显示报错,大概率如#3 所说,可能有哪个地方(比如框架)监听了 uncaughtException 却没打印出来
    Sparetire
        8
    Sparetire  
       2018-06-12 01:49:25 +08:00 via Android
    @Sparetire 笔误 false。。
    jimchen9999
        9
    jimchen9999  
       2018-06-15 12:41:42 +08:00
    @Sparetire 我是没学好 见笑了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4774 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:49 · PVG 17:49 · LAX 02:49 · JFK 05:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.