Giter VIP home page Giter VIP logo

javascript-idiosyncrasies's Introduction

JavaScript idiosyncrasies, kinda.

This is a growing collection of some JavaScript idiosyncrasies, and a few things that might not be well recognized so I want to make aware.

Some of these are just to confuse the reader, and by no means encourage best practices and should never be seen in production code. It's simply to demonstrate the good and bad parts of JavaScript.


Q. What's the result?

(function() {
    var foo = new Object();
    var bar = new Object();
    var map = new Object();

    map[foo] = 'foo';
    map[bar] = 'bar';

    return map[foo];
})();

A.

"bar"

JSBin | JSBin explained

Q. What's the result?

function f() {
    return 'foo';
}
(function() {
    if (1 === 0) {
        function f() {
            return 'bar';
        }
    }
    return f();
})();

A.

"bar"

JSBin | JSBin explained

Q. What's the result?

(function() {
    return NaN === NaN;
})();

A.

false

JSBin | JSBin explained

Q. What's the result?

(function() {
    function foo() {
        return 'a';
    }

    return foo();

    function foo() {
        return 'b';
    }
})();

A.

"b"

JSBin | JSBin explained

Q. What's the result?

(function(limit) {
  for (var i = 0; i < limit; i++) {
    setTimeout(function() {
      console.log(i);
    }, 0);
  }
})(3);

A.

3
3
3

JSBin | JSBin explained

Q. What's the result?

(function(a, b) {
  arguments[1] = 3;
  return b;
})(1, 2);

A.

3

JSBin | JSBin explained

Q. What's the result?

(function(a, b, c) {
  delete arguments[0];

  return arguments.length;
})(1, 2, 3);

A.

3

JSBin | JSBin explained

Q. What's the result?

(function() {
    return (function (a, b) {}).length;
})();

A.

2

JSBin | JSBin explained

Q. What's the result?

(function(a, b) {
   var foo, bar;

   foo = (bar = a, b);

   return foo;
})(1, 2);

A.

2

JSBin | JSBin explained

Q. What's the result?

(function(undefined) {
  var foo;
  return foo === undefined;
})(true);

A.

false

JSBin | JSBin

Q. What's the result?

(function(n) {
    return ~(n);
})(-3);

A.

2

JSBin | JSBin explained

Q. What's the result?

(function(n) {
    return ~~n;
})(-1.5);

A.

-1

JSBin | JSBin explained

Q. What's the result?

(function(x) {
    return !!x;
})('a');

A.

true

JSBin | JSBin explained

Q. What's the result?

(function() {
    return typeof null === 'null';
})();

A.

false

JSBin | JSBin explained

Q. What's the result?

(function() {
    return +(new Date())
})();

A.

1393812837139

JSBin | JSBin explained

Q. What's the result?

(function() {
    return (new Date()).valueOf();
})();

A.

1393812845834

JSBin | JSBin explained

Q. What's the result?

(function() {
    return ''+(new Date());
})();

A.

"Sun Mar 02 2014 18:14:01 GMT-0800 (PST)"

JSBin | JSBin explained

Q. What's the result?

(function() {
    var foo = 'a';
    (function(foo) {
        foo = 'b';
    })(foo);
    return foo;
})();

A.

"a"

JSBin | JSBin explained

Q. What's the result?

(function() {
    return arguments.toString();
})();

A.

"[object Arguments]"

JSBin | JSBin explained

Q. What's the result?

(function() {
    return (function(){}) === (function(){});
})();

A.

false

JSBin | JSBin explained

Q. What's the result?

(function(n) {
    return n === new Number(n);
})(10);

A.

false

JSBin | JSBin explained

Q. What's the result?

(function(x) {
    return new String(x) === x;
})('a');

A.

false

JSBin | JSBin explained

Q. What's the result?

(function() {
    return [1+1] === [2];
})()

A.

false

JSbin | JSBin explained

Q. What's the result?

(function() {
    return {foo: 'bar'} === {foo: 'bar'};
})();

A.

false

JSBin| JSBin explained

Q. What's the result?

(function() {
    for(;;);
    return 1;
})();

A.

*Infinite loop*

JSBin | JSBin explained

Q. What's the result?

(function() {
    return ['10','10','10','10'].map(parseInt);
})();

A.

[10, NaN, 2, 3]

JSBin | JSBin explained

Q. What's the result?

(function() {
    var o = {
        toString: function() {
            return 'a';
        },
        valueOf: function () {
            return 1;
        }
    };

    return o + o;
})();

A.

2

JSBin | JSBin explained

Q. What's the result?

(function() {

  var f = function g() {
    return 1;
  };

  return g();

})();

A.

ReferenceError: g is not defined

JSBin | JSBin explained

Q. What's the result?

(function() {
  return void (1+1);
})();

A.

undefined

JSBin | JSBin explained

Q. What's the result?

(function() {

  var a = [1,2];
  var b = a;

  a = [1,2];

  return a === b;

})();

A.

false

JSBin | JSBin explained

Q. What's the result?

(function() {
    var x = 1;

    return (function () {
        return x;

        var x = 2;
    })();
})();

A.

undefined

JSBin | JSBin explained

Q. What's the result?

(function(n) {
    var even = function (num) {
        return (num === 0) || !(even(num - 1))
    };

    var _even = even;

    even = void 0;

    return _even(n);
})(2);

A.

TypeError: undefined is not a function

JSBin | JSBin explained

Q. What's the result?

(function() {
    var n;

    function name() {
        return this.name
    };

    n = name.bind({name: 'foo'});
    n = n.bind({name: 'bar'})

    return n();
})();

A.

"foo"

JSBin | JSBin explained

Q. What's the result?

(function() {
    return ('3' > '12') === ('03' > '12');
})();

A.

false

JSBin | JSBin explained

Q. What's the result?

(function() {
    return Math.pow(2,53) === (Math.pow(2,53) + 1);
}();

A.

true

JSBin | JSBin explained

Q. What's the result?

(function() {
    return Math.pow(2,1024) === Infinity;
})();

A.

true

JSBin | JSBin explained

Q. What's the result?

(function() {
    return (Infinity - 100) === Infinity;
}();

A.

true

JSBin | JSBin explained

Q. What's the result?

(function() {
    return (0.1 + 0.2 === 0.3);
})();

A.

false

JSBin | JSBin explained

Q. What's the result?

(function() {
    return (0.1).toFixed(20);
})();

A.

"0.10000000000000000555"

JSBin | JSBin explained

Q. What's the result?

(function() {
    return parseFloat('3.3.4');
})();

A.

3.3

JSBin | JSBin explained

Q. What's the result?

(function() {
    return 010;
})();

A.

8

JSBin | JSBin explained

Q. What's the result?

(function() {
    return (parseInt('10000000000000000', 10) ===
            parseInt('10000000000000001', 10)
    );
})();

A.

true

JSBin | JSBin explained

Q. What's the result?

(function(n) {
    return (Function)('var n = n || 2; return n;')(n);
})(1);

A.

2

JSBin | JSBin explained

Q. What's the result? (assuming window scope)

var a = 1;
b = 1;

var result = (function() {
  return (delete window.a) === (delete window.b);
})();

A.

false

JSBin | JSBin explained

var result = (function(x) {
  var isMatch,
      regex = /[\w]/gi;


  isMatch = regex.test(x);
  isMatch = regex.test(x);

  return isMatch;
})('a');

A.

false

JSBin | JSBin explained

Q. What's the result?

(function() {
    return ![];
})();

A.

false

JSBin | JSBin explained

Q. What's the result?

(function() {
    return +[];
})();

A.

0

JSBin | JSBin explained

Q. What's the result?

(function() {
    return [][[]];
})();

A.

undefined

JSBin | JSBin explained

Q. What's the result?

(function() {
    return +!+[];
})();

A.

1

JSBin | JSBin explained

Q. What's the result?

(function() {
    return []+[];
})();

A.

""

JSBin | JSBin explained

Q. What's the result?

(function() {
    return true + 1;
})();

A.

2

JSBin | JSBin explained

Q. What's the result?

(function() {
    return 1 / '';
})();

A.

Infinity

JSBin | JSBin explained

Q. What's the result?

(function() {
    return 1 * null;
})();

A.

0

JSBin | JSBin explained

Q. What's the result?

(function() {
    return new Array() == false;
})();

A.

true

JSBin | JSBin explained

Q. What's the result?

(function() {
  if ([]) {
    return [] == false;
  }
})();

A.

true

JSBin | JSBin explained

License

Released under the MIT License.

javascript-idiosyncrasies's People

Contributors

miguelmota avatar joewagner avatar darsain avatar falconepl avatar nuysoft avatar

Watchers

James Cloos avatar Artem Zinoviev avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.