DEV Community

Unexpected Behind The Scenes of console.log() πŸ˜Άβ€πŸŒ«

Arjun Vijay Prakash on February 08, 2024

πŸ€” Have you ever thought about how console.log works and how it can handle many arguments at once? If you’ve worked with JavaScript, then...
Collapse
 
jameslivesey profile image
James Livesey

Not to mention that arguments is a reserved word to get all the arguments passed to a function as an iterable object (including arguments already named) without having to use the spread operator in the function's parameters list:

function test(a, b, c) {
    console.log("All arguments:", arguments);

    // We must use the spread operator to use `forEach` as `arguments` is an object with other properties in it
    [...arguments].forEach(function(arg) {
        console.log(arg);
    });
}

test("hello", 123, "world", 456, null);
Enter fullscreen mode Exit fullscreen mode

Result:

All arguments: ["hello", 123, "world", 456, null]
hello
123
world
456
null
Enter fullscreen mode Exit fullscreen mode

(Notice how arguments contains extra arguments than explicitly specified with the named a, b and c parameters.)

Collapse
 
arjuncodess profile image
Arjun Vijay Prakash

This is amazing! Thanks for the info, James. πŸ™Œ

Collapse
 
best_codes profile image
Best Codes

Great article! Browsers and even the simplest things in JS really are amazing. (For that matter, that we can turn sand into silicon and silicon into computers).
Keep up the good writing!

Collapse
 
arjuncodess profile image
Arjun Vijay Prakash

Thank you so much for your kind words!

I liked that reference to sand, silicon and computers, it greatly covers the fascinating hardware part.

Collapse
 
best_codes profile image
Best Codes

No problem! You deserved some kindness for such awesome content!
Keep up the good work, and happy coding!

Collapse
 
anmolbaranwal profile image
Anmol Baranwal

Didn't knew that :D

Thanks for the quick explanation.

Collapse
 
arjuncodess profile image
Arjun Vijay Prakash

It's my pleasure!
Thanks for reading the article.
(i'd be grateful if you shared this with your friends)

Collapse
 
lexlohr profile image
Alex Lohr

Arrays in JS have a maximum number of 2Β³Β²-2 elements regardless if they are constructed via rest operator or otherwise.

Collapse
 
arjuncodess profile image
Arjun Vijay Prakash

Thanks for sharing knowledge, buddy!

Collapse
 
alexroor4 profile image
Alex Roor

Thanks for sharing your expertise on this matter. Your depth of knowledge shines through in every paragraph.

Collapse
 
arjuncodess profile image
Arjun Vijay Prakash • Edited

Thanks, Alex!

I have to admit, I thought it was some kind of miracle πŸ˜‚

Well, every master was once a beginner!