node.js displays "undefined" on the console

52,136

Solution 1

Just write "hello world"; and hit enter... it will return "hello world" instead of undefined, thus no undefined is displayed. console.log returns undefined and also logs arguments to console so you get multiple messages.

Solution 2

The JavaScript functions always return something. If you don't specify something to return in the function, 'undefined' is returned by default (you can check this out in Firebug too).

Don't worry though, this doesn't affect anything, you can ignore it.

Solution 3

As pointed out by others, javascript function will always return undefined if you do not specify any return value. You can just ignore it. It's not going to cause any harm. But if it's annoying you too much then you can turn it off in repl. Repl has this property ignoreUndefined which is set to false by default. You can set it to true. Try this:

module.exports.repl.ignoreUndefined = true;

Solution 4

Well, the question was made some years ago, but there is still another way to explain what is happening here.

Try next command:

console.log("Hello World") || "Bye World";

As mentioned function console.log() returns undefined normally and you can choose a better return value. Since Non-strict (abstract) comparison considers undefined equal to false the || operator allows you that choice.

Considering that it is just a debugging tool, this is unnecessary in general use, but helps to understand that console displays text sent to stdout and also evals the command and displays the returned value, or undefined if no value was received.

Solution 5

If you need to turn on ignoreUndefined from inside a module, you can use the following line to simulate AvinashB's answer without typing into the console by yourself:

process.stdin.emit('data', "module.exports.repl.ignoreUndefined = true;\n");
Share:
52,136
Sandeep G B
Author by

Sandeep G B

Software Engineer - Seattle, WA Interests: OOAD, Design patterns, Web development Languages: C# / Javascript / SQL / PERL

Updated on July 09, 2022

Comments

  • Sandeep G B
    Sandeep G B almost 2 years

    Recently I installed node.js on my Windows 7 machine.

    On execution of JavaScript, I get an undefined message along with successful execution of the expression.

    What's wrong here? I have not noticed any other side effects.

    enter image description here

  • Sandeep G B
    Sandeep G B over 12 years
    +1. Thanks for the reply. Is there a way to get rid of 'undefined', what should be the syntax?
  • alessioalex
    alessioalex over 12 years
    If you make a program (web app or command line), you'll never get "flying" undefineds, so don't worry about that.
  • Sandeep G B
    Sandeep G B over 12 years
    Thanks Esailija. When I don't enter any function or any character; then also "undefined" is displayed. Can you please explain what is happening under the hood?
  • Sandeep G B
    Sandeep G B over 12 years
    When I don't enter any function or any character; then also "undefined" is displayed. Can you please explain what is happening under the hood?
  • Esailija
    Esailija over 12 years
    @SandeepGB, what do you expect for not having any input? :P The return value of not entering anything makes most sense to be undefined
  • alessioalex
    alessioalex over 12 years
    What's happening under the hood. Enter asdasd for example and see this error: at REPLServer.eval (repl.js:80:21) ... So behind the scenes there's an eval() function which returns 'undefined'.
  • Sandeep G B
    Sandeep G B over 12 years
    I was trying to understand whats going on. alessioalex answered my question :)
  • Sandeep G B
    Sandeep G B over 12 years
    Thanks. Got it now :) I should start looking at how things are implemented and not just how to get it working.
  • Devid Farinelli
    Devid Farinelli almost 8 years
    Hi @Melo, I think this code can be re-written to a nicer console.log("Hello World") || "Bye World".