Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7179983
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 28, 20262026-05-28T17:15:10+00:00 2026-05-28T17:15:10+00:00

I was playing around with some JavaScript code and found that when I took

  • 0

I was playing around with some JavaScript code and found that when I took my “console.dir” statements out, the results were different. It appeared as if certain properties seemed to become visible after console.dir was called. For example, the below code will print out “undefined” for x1._rgbString, but will print out an actual value for x2._rgbString.

var x1 = MochiKit.Color.Color.fromHexString("#ad3f40");
console.log(x1._rgbString);

var x2 = MochiKit.Color.Color.fromHexString("#ad3f40");
console.dir(x2);
console.log(x2._rgbString);

Full test code here: http://patorjk.com/misc/console-dir-test.htm

If I add in a console.dir(x1) before console.log(x1._rgbString), then console.log(x1._rgbString) will start printing out a value instead of printing out undefined.

Why would calling console.dir on the object effect the value of fields on the object? Does console.dir have side effects or is there something I’m missing here?

*I’m aware that underscores usually mean private, but I was logging this value and was surprised it started showing up as “undefined” when console.dir wasn’t first called.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-28T17:15:11+00:00Added an answer on May 28, 2026 at 5:15 pm

    The reason is that console.dir (and console.log for that matter) calls toString() on the value you pass to it. That normally would have no side effect, but Mochikit.Color.Color’s toString() in turn calls toRGBString(). And toRGBString() caches its result in this._rgbString:

    toRGBString: function () {
        var c = this.rgb;
        var ccc = MochiKit.Color.clampColorComponent;
        var rval = this._rgbString;
        if (!rval) {
            var mid = (
                ccc(c.r, 255).toFixed(0)
                + "," + ccc(c.g, 255).toFixed(0)
                + "," + ccc(c.b, 255).toFixed(0)
            );
            if (c.a != 1) {
                rval = "rgba(" + mid + "," + c.a + ")";
            } else {
                rval = "rgb(" + mid + ")";
            }
            this._rgbString = rval; // <-- _rgbString is set
        }
        return rval;
    },
    

    So, it’s not that the console functions have side effects as such, it’s just that some toString() implementations may have. It’s worth noting that some JS minimizers (including Google Closure Compiler) assume that there are no side effects in toString(), so they may actually do optimizations that will have impact on code that does.

    In this case it wouldn’t be a problem, since the side effect is just caching – as long as you don’t use it externally – hence the “private” underscore.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am currently playing around with different scraping techniques and found out, that it
I have been playing around with some debugging and wrote some C code that
I'm playing around with HTML5. For that purpose I created some small Javascript widget
Here is some C++ code I'm playing around with: #include <iostream> #include <vector> #define
I'm playing around with Rhino Mocks and am trying to set some dummy results
I've playing around with linux and noticed that for some mysterious reason commands like
I was just playing around with some code in LINQPad and managed to crash
I'm just playing around with some code. I create an Activity and simply do
I'm playing around with some code katas and trying to get a better understanding
I was playing around with some code today, and I came across the idea

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.