如果条件无法正常工作的节点js

时间:2018-06-28 16:47:19

标签: javascript node.js if-statement

我想用json对象的主体初始化全局变量。但是在我的代码if中,而不是if中,else的一部分代码会执行,如果console.log(typeof ticker)我不确定。看来是问题所在。

var ticker;
request({
    method: 'POST',
    url: 'xyz'
}, (err, res, body) => {

    if (typeof ticker === undefined) {
        ticker = body;
    } else {

        console.log(ticker)
    }
})

2 个答案:

答案 0 :(得分:4)

您的条件将始终为false typeof 运算符返回string。因此,您的if条件应为:

typeof ticker === 'undefined'

 ticker === undefined

答案 1 :(得分:0)

上面的马可答案是正确的答案。我要解决的是以下语句,以及如何自己验证:

  

如果条件不能正常工作

您可以使用调试器来了解您的程序。由于您正在使用节点,因此可以从命令行验证此权限。

  1. 在您感兴趣的代码行上方放置一个debugger语句。这将设置一个断点。
  2. 运行node inspect <filename>
  3. 从文件的第1行开始,REPL在命令外壳中打开。要到达断点,只需在命令行中输入ccont

您现在在这里:

> 3 debugger
  4 if (typeof ticker === undefined) {
  5 ticker = body
debug> _
  1. 您现在可以直接在REPL中运行表达式,以查看节点如何在运行时对其求值:

    debug> typeof ticker
    'undefined'               // aha, there's our programming error
     debug> typeof ticker === undefined
     false
     debug> typeof ticker === 'undefined'  // it works
     true
    
  2. 要进一步验证程序的流程,请在REPL中输入next以逐行查看程序的流向。

(可选)您可以利用chrome的界面进行调试:

  • 运行node --inspect-brk <filename>
  • 将Chrome打开到chrome://inspect
  • 点击Open dedicated devTools for node

Chrome的界面可让您突出显示或悬停在变量和表达式上以查看其值。