{"id":13621020,"url":"https://github.com/miguelmota/javascript-idiosyncrasies","last_synced_at":"2025-04-14T22:33:14.453Z","repository":{"id":15974206,"uuid":"18717070","full_name":"miguelmota/javascript-idiosyncrasies","owner":"miguelmota","description":"A bunch of Javascript idiosyncrasies to beginners.","archived":true,"fork":false,"pushed_at":"2019-01-20T01:09:00.000Z","size":43,"stargazers_count":380,"open_issues_count":0,"forks_count":90,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-11-08T07:39:32.333Z","etag":null,"topics":["awesome","example","idiosyncrasies","javascript","jsbin","nodejs","noob","tutorial","v8","wtf"],"latest_commit_sha":null,"homepage":"https://github.com/miguelmota/javascript-idiosyncrasies","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/miguelmota.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-12T23:19:06.000Z","updated_at":"2024-11-07T21:59:10.000Z","dependencies_parsed_at":"2022-09-04T19:01:26.223Z","dependency_job_id":null,"html_url":"https://github.com/miguelmota/javascript-idiosyncrasies","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelmota%2Fjavascript-idiosyncrasies","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelmota%2Fjavascript-idiosyncrasies/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelmota%2Fjavascript-idiosyncrasies/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelmota%2Fjavascript-idiosyncrasies/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/miguelmota","download_url":"https://codeload.github.com/miguelmota/javascript-idiosyncrasies/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248972626,"owners_count":21191832,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["awesome","example","idiosyncrasies","javascript","jsbin","nodejs","noob","tutorial","v8","wtf"],"created_at":"2024-08-01T21:01:01.826Z","updated_at":"2025-04-14T22:33:09.436Z","avatar_url":"https://github.com/miguelmota.png","language":null,"readme":"\u003ch3 align=\"center\"\u003e\n  \u003cbr /\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/168240/51433988-e04f7600-1c0c-11e9-9b06-217d668dcc79.png\" alt=\"logo\" width=\"700\" /\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n\u003c/h3\u003e\n\n# JavaScript idiosyncrasies\n\n\u003e This is a collection of things in JavaScript that may not be well recognized, espcially to beginners.\n\n[![License](http://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/miguelmota/javascript-idiosyncrasies/master/LICENSE)\n\nDisclaimer: Some of these snippets are simply to demonstrate the *quirky* parts of JavaScript and by no means encourage best practices and should never be seen in production code.\n\n---\n\nIn no particular order:\n\nQ. What's the result?\n\n```javascript\n(function() {\n    var foo = new Object();\n    var bar = new Object();\n    var map = new Object();\n\n    map[foo] = 'foo';\n    map[bar] = 'bar';\n\n    return map[foo];\n})();\n```\n\nA.\n\n```javascript\n\"bar\"\n```\n\n[JSBin](http://jsbin.com/xogaki/1/edit) | [JSBin explained](http://jsbin.com/kadoko/1/edit)\n\nQ. What's the result?\n\n```javascript\nfunction f() {\n    return 'foo';\n}\n(function() {\n    if (1 === 0) {\n        function f() {\n            return 'bar';\n        }\n    }\n    return f();\n})();\n```\n\nA.\n\n```javascript\n\"bar\"\n```\n\n[JSBin](http://jsbin.com/lotavo/1/edit) | [JSBin explained](http://jsbin.com/xezad/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return NaN === NaN;\n})();\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/katana/2/edit) | [JSBin explained](http://jsbin.com/xorix/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    function foo() {\n        return 'a';\n    }\n\n    return foo();\n\n    function foo() {\n        return 'b';\n    }\n})();\n```\n\nA.\n\n```javascript\n\"b\"\n```\n\n[JSBin](http://jsbin.com/yutuce/1/edit) | [JSBin explained](http://jsbin.com/qemuf/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(limit) {\n  for (var i = 0; i \u003c limit; i++) {\n    setTimeout(function() {\n      console.log(i);\n    }, 0);\n  }\n})(3);\n```\n\nA.\n\n```javascript\n3\n3\n3\n```\n\n[JSBin](http://jsbin.com/focobo/1/edit) | [JSBin explained](http://jsbin.com/lopoh/2/edit)\n\nQ. What's the result?\n\n```javascript\n(function(a, b) {\n  arguments[1] = 3;\n  return b;\n})(1, 2);\n```\n\nA.\n\n```javascript\n3\n```\n\n[JSBin](http://jsbin.com/hajus/1/edit) | [JSBin explained](http://jsbin.com/yulahi/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(a, b, c) {\n  delete arguments[0];\n\n  return arguments.length;\n})(1, 2, 3);\n```\n\nA.\n\n```javascript\n3\n```\n\n[JSBin](http://jsbin.com/gicij/1/edit) | [JSBin explained](http://jsbin.com/xobap/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return (function (a, b) {}).length;\n})();\n```\n\nA.\n\n```javascript\n2\n```\n\n[JSBin](http://jsbin.com/rusas/1/edit) | [JSBin explained](http://jsbin.com/cofam/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(a, b) {\n   var foo, bar;\n\n   foo = (bar = a, b);\n\n   return foo;\n})(1, 2);\n```\n\nA.\n\n```javascript\n2\n```\n\n[JSBin](http://jsbin.com/dahaw/1/edit) | [JSBin explained](http://jsbin.com/heteg/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(undefined) {\n  var foo;\n  return foo === undefined;\n})(true);\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/vurego/1/edit) | [JSBin](http://jsbin.com/qabuye/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(n) {\n    return ~(n);\n})(-3);\n```\n\nA.\n\n```javascript\n2\n```\n\n[JSBin](http://jsbin.com/begehe/1/edit) | [JSBin explained](http://jsbin.com/buzabo/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(n) {\n    return ~~n;\n})(-1.5);\n```\n\nA.\n\n```javascript\n-1\n```\n\n[JSBin](http://jsbin.com/roniwu/2/edit) | [JSBin explained](http://jsbin.com/kijuze/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(x) {\n    return !!x;\n})('a');\n```\n\nA.\n\n```javascript\ntrue\n```\n\n[JSBin](http://jsbin.com/rahuy/1/edit) | [JSBin explained](http://jsbin.com/yegix/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return typeof null === 'null';\n})();\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/nurihe/5/edit) | [JSBin explained](http://jsbin.com/yeroke/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return +(new Date())\n})();\n```\n\nA.\n\n```javascript\n1393812837139\n```\n\n[JSBin](http://jsbin.com/lobib/2/edit) | [JSBin explained](http://jsbin.com/viwoba/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return (new Date()).valueOf();\n})();\n```\n\nA.\n\n```javascript\n1393812845834\n```\n\n[JSBin](http://jsbin.com/loxim/1/edit) | [JSBin explained](http://jsbin.com/cigis/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return ''+(new Date());\n})();\n```\n\nA.\n\n```javascript\n\"Sun Mar 02 2014 18:14:01 GMT-0800 (PST)\"\n```\n\n[JSBin](http://jsbin.com/hiheq/2/edit) | [JSBin explained](http://jsbin.com/yirey/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    var foo = 'a';\n    (function(foo) {\n        foo = 'b';\n    })(foo);\n    return foo;\n})();\n```\n\nA.\n\n```javascript\n\"a\"\n```\n\n[JSBin](http://jsbin.com/mifiy/1/edit) | [JSBin explained](http://jsbin.com/pegavu/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return arguments.toString();\n})();\n```\n\nA.\n\n```javascript\n\"[object Arguments]\"\n```\n\n[JSBin](http://jsbin.com/foqoc/1/edit) | [JSBin explained](http://jsbin.com/sojow/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return (function(){}) === (function(){});\n})();\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/yikero/2/edit) | [JSBin explained](http://jsbin.com/cuzub/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(n) {\n    return n === new Number(n);\n})(10);\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/jivini/1/edit) | [JSBin explained](http://jsbin.com/titemi/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(x) {\n    return new String(x) === x;\n})('a');\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/femeto/1/edit) | [JSBin explained](http://jsbin.com/xelado/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return [1+1] === [2];\n})()\n```\n\nA.\n\n```\nfalse\n```\n\n[JSbin](http://jsbin.com/nilagi/1/edit) | [JSBin explained](http://jsbin.com/nezow/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return {foo: 'bar'} === {foo: 'bar'};\n})();\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/dokej/1/edit)| [JSBin explained](http://jsbin.com/kocoma/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    for(;;);\n    return 1;\n})();\n```\n\nA.\n\n```javascript\n*Infinite loop*\n```\n\n[JSBin](http://jsbin.com/rerati/1/edit) | [JSBin explained](http://jsbin.com/dukagu/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return ['10','10','10','10'].map(parseInt);\n})();\n```\n\nA.\n\n```javascript\n[10, NaN, 2, 3]\n```\n\n[JSBin](http://jsbin.com/culufi/1/edit) | [JSBin explained](http://jsbin.com/zuyuv/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    var o = {\n        toString: function() {\n            return 'a';\n        },\n        valueOf: function () {\n            return 1;\n        }\n    };\n\n    return o + o;\n})();\n```\n\nA.\n\n```javascript\n2\n```\n\n[JSBin](http://jsbin.com/qinol/1/edit) | [JSBin explained](http://jsbin.com/wizemo/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n\n  var f = function g() {\n    return 1;\n  };\n\n  return g();\n\n})();\n```\n\nA.\n\n```javascript\nReferenceError: g is not defined\n```\n\n[JSBin](http://jsbin.com/pibob/1/edit) | [JSBin explained](http://jsbin.com/lusuc/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  return void (1+1);\n})();\n```\n\nA.\n\n```javascript\nundefined\n```\n\n[JSBin](http://jsbin.com/cawiro/1/edit) | [JSBin explained](http://jsbin.com/tacet/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n\n  var a = [1,2];\n  var b = a;\n\n  a = [1,2];\n\n  return a === b;\n\n})();\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/kucob/1/edit) | [JSBin explained](http://jsbin.com/sidija/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    var x = 1;\n\n    return (function () {\n        return x;\n\n        var x = 2;\n    })();\n})();\n```\n\nA.\n\n```javascript\nundefined\n```\n\n[JSBin](http://jsbin.com/pufaqiwuri/1/edit) | [JSBin explained](http://jsbin.com/zabat/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(n) {\n    var even = function (num) {\n        return (num === 0) || !(even(num - 1))\n    };\n\n    var _even = even;\n\n    even = void 0;\n\n    return _even(n);\n})(2);\n```\n\nA.\n\n```javascript\nTypeError: undefined is not a function\n```\n\n[JSBin](http://jsbin.com/mopab/1/edit) | [JSBin explained](http://jsbin.com/sisari/2/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    var n;\n\n    function name() {\n        return this.name\n    };\n\n    n = name.bind({name: 'foo'});\n    n = n.bind({name: 'bar'})\n\n    return n();\n})();\n```\n\nA.\n\n```javascript\n\"foo\"\n```\n\n[JSBin](http://jsbin.com/yokaw/1/edit) | [JSBin explained](http://jsbin.com/biruk/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return ('3' \u003e '12') === ('03' \u003e '12');\n})();\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/mohuf/1/edit) | [JSBin explained](http://jsbin.com/pileko/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return Math.pow(2,53) === (Math.pow(2,53) + 1);\n}();\n```\n\nA.\n\n```javascript\ntrue\n```\n\n[JSBin](http://jsbin.com/warowo/1/edit) | [JSBin explained](http://jsbin.com/sudut/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return Math.pow(2,1024) === Infinity;\n})();\n```\n\nA.\n\n```javascript\ntrue\n```\n\n[JSBin](http://jsbin.com/xozim/1/edit) | [JSBin explained](http://jsbin.com/vohoco/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n    return (Infinity - 100) === Infinity;\n}();\n```\n\nA.\n\n```javascript\ntrue\n```\n\n[JSBin](http://jsbin.com/dijiqo/1/edit) | [JSBin explained](http://jsbin.com/wefaw/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return (0.1 + 0.2 === 0.3);\n})();\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/nedupi/1/edit) | [JSBin explained](http://jsbin.com/fuwuz/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return (0.1).toFixed(20);\n})();\n```\n\nA.\n\n```javascript\n\"0.10000000000000000555\"\n```\n\n[JSBin](http://jsbin.com/vewuge/1/edit) | [JSBin explained](http://jsbin.com/lupaxi/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return parseFloat('3.3.4');\n})();\n```\n\nA.\n\n```javascript\n3.3\n```\n\n[JSBin](http://jsbin.com/wuxobi/1/edit) | [JSBin explained](http://jsbin.com/letef/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return 010;\n})();\n```\n\nA.\n\n```javascript\n8\n```\n\n[JSBin](http://jsbin.com/sugewu/1/edit) | [JSBin explained](http://jsbin.com/disuzo/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return (parseInt('10000000000000000', 10) ===\n            parseInt('10000000000000001', 10)\n    );\n})();\n```\n\nA.\n\n```javascript\ntrue\n```\n\n[JSBin](http://jsbin.com/yociz/1/edit) | [JSBin explained](http://jsbin.com/jefera/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(n) {\n    return (Function)('var n = n || 2; return n;')(n);\n})(1);\n```\n\nA.\n\n```javascript\n2\n```\n\n[JSBin](http://jsbin.com/tujig/1/edit) | [JSBin explained](http://jsbin.com/redup/2/edit)\n\nQ. What's the result? (assuming window scope)\n\n```javascript\nvar a = 1;\nb = 1;\n\n(function() {\n  return (delete window.a) === (delete window.b);\n})();\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/cowoji/1/edit) | [JSBin explained](http://jsbin.com/ceriwu/1/edit)\n\n```javascript\n(function(x) {\n  var isMatch,\n      regex = /[\\w]/gi;\n\n  return (regex.test(x) === regex.test(x));\n})('a');\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/kulavu/2/edit) | [JSBin explained](http://jsbin.com/hamog/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return ![];\n})();\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/puyap/1/edit) | [JSBin explained](http://jsbin.com/mavicu/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return +[];\n})();\n```\n\nA.\n\n```javascript\n0\n```\n\n[JSBin](http://jsbin.com/huboca/1/edit) | [JSBin explained](http://jsbin.com/xudanu/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return [][[]];\n})();\n```\n\nA.\n\n```javascript\nundefined\n```\n\n[JSBin](http://jsbin.com/vetiba/1/edit) | [JSBin explained](http://jsbin.com/dipedereti/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return +!+[];\n})();\n```\n\nA.\n\n```javascript\n1\n```\n\n[JSBin](http://jsbin.com/dulih/1/edit) | [JSBin explained](http://jsbin.com/veruri/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return []+[];\n})();\n```\n\nA.\n\n```javascript\n\"\"\n```\n\n[JSBin](http://jsbin.com/lekun/1/edit) | [JSBin explained](http://jsbin.com/xukis/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return true + 1;\n})();\n```\n\nA.\n\n```javascript\n2\n```\n\n[JSBin](http://jsbin.com/femicu/1/edit) | [JSBin explained](http://jsbin.com/cotaf/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return 1 / '';\n})();\n```\n\nA.\n\n```javascript\nInfinity\n```\n\n[JSBin](http://jsbin.com/fepidu/1/edit) | [JSBin explained](http://jsbin.com/hofutu/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return 1 * null;\n})();\n```\n\nA.\n\n```javascript\n0\n```\n\n[JSBin](http://jsbin.com/xocol/1/edit) | [JSBin explained](http://jsbin.com/kuhec/1/edit)\n\nQ. What's the result?\n\n```\n(function() {\n    return new Array() == false;\n})();\n```\n\nA.\n\n```javascript\ntrue\n```\n\n[JSBin](http://jsbin.com/mexanu/1/edit) | [JSBin explained](http://jsbin.com/tizagi/3/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  if ([]) {\n    return [] == false;\n  }\n})();\n```\n\nA.\n\n```javascript\ntrue\n```\n\n[JSBin](http://jsbin.com/cuyer/1/edit) | [JSBin explained](http://jsbin.com/suzev/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  return ''.concat(null);\n})();\n```\n\nA.\n\n```javascript\n\"null\"\n```\n\n[JSBin](http://jsbin.com/mobaqepetu/1/edit) | [JSBin explained](http://jsbin.com/xiwakihaxa/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(a, b) {\n  return a + + b;\n})('a','b');\n```\n\nA.\n\n```javascript\n\"aNaN\"\n```\n\n[JSBin](http://jsbin.com/wenifelaco/1/edit) | [JSBin explained](http://jsbin.com/bivuzupaje/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  Object.prototype.foo = 'foo';\n\n  return foo;\n})();\n```\n\nA.\n\n```javascript\n\"foo\"\n```\n\n[JSBin](http://jsbin.com/jogeroluru/1/edit) | [JSBin explained](http://jsbin.com/wajumigoru/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  return 1000 === 1e3;\n})();\n```\n\nA.\n\n```javascript\ntrue\n```\n\n[JSBin](http://jsbin.com/xafixizapo/1/edit) | [JSBin explained](http://jsbin.com/zigozeheti/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  return 9999999999999999;\n})();\n```\n\nA.\n\n```javascript\n10000000000000000\n```\n\n[JSBin](http://jsbin.com/detarakare/1/edit) | [JSBin explained](http://jsbin.com/bisinayicu/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  (function() {\n    var a = b = 1;\n  })();\n\n  return typeof a === typeof b;\n})();\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/rudokoqiza/1/edit) | [JSBin explained](http://jsbin.com/qubokakuga/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  return Array(3).map(function(o) { return 'a'; });\n})();\n```\n\nA.\n\n```javascript\n[undefined, undefined, undefined]\n```\n\n[JSBin](http://jsbin.com/nafuhuyeka/1/edit?html,js,console) | [JSBin explained](http://jsbin.com/pamafoxuto/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  var foo = [0,1,2];\n  foo[10] = 10;\n  return foo.filter(function(n) { return n === undefined; });\n})();\n```\n\nA.\n\n```javascript\n[]\n```\n\n[JSBin](http://jsbin.com/taqewiside/1/edit) | [JSBin explained](http://jsbin.com/sokatasosu/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function(x) {\n  var ret = null;\n\n  switch(x) {\n    case 'A':\n        ret = 'A';\n        break;\n    default:\n        ret = 'unknown';\n        break;\n  }\n\n  return ret;\n})(new String('A'));\n```\n\nA.\n\n```javascript\n\"unknown\"\n```\n\n[JSBin](http://jsbin.com/zawezozepe/1/edit) | [JSBin explained](http://jsbin.com/leyaqamuru/1/edit?html,js,consol:w\njke)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  var x = {};\n\n  return x.prototype === Object.getPrototypeOf(x);\n})();\n```\n\nA.\n\n```javascript\nfalse\n```\n\n[JSBin](http://jsbin.com/fokomolova/1/edit) | [JSBin explained](http://jsbin.com/coxakaxiwu/1/edit?html,js,console)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  function foo() {}\n  foo.name = 'bar';\n\n  return foo.name;\n})();\n```\n\nA.\n\n```javascript\n\"foo\"\n```\n\n[JSBin](http://jsbin.com/bequxifegi/1/edit) | [JSBin explained](http://jsbin.com/zenipunohi/1/edit)\n\nQ. What's the result?\n\n```javascript\n(function() {\n  return Array(5).join(',').length;\n})();\n```\n\nA.\n\n```javascript\n4\n```\n\n[JSBin](http://jsbin.com/cabalutozu/1/edit) | [JSBin explained](http://jsbin.com/yewopuxohi/1/edit)\n\n\nQ. What's the result?\n\n```javascript\n(function(x) {\n  return x++ + ++x;\n})(2);\n```\n\nA.\n\n```javascript\n6\n```\n\n[JSBin](https://jsbin.com/laqebotenu/edit?js,console) | [JSBin explained](https://jsbin.com/tukutofimi/edit?js,console)\n\n\nQ. What's the result?\n\n```javascript\n(function() {\n  'use strict';\n\n  let type = typeof foo;\n  let foo = 1;\n\n  return type;\n})();\n```\n\nA.\n\n```javascript\nReferenceError: foo is not defined\n```\n\n---\n\n## License\n\n[MIT](LICENSE)\n","funding_links":[],"categories":["awesome","nodejs"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiguelmota%2Fjavascript-idiosyncrasies","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmiguelmota%2Fjavascript-idiosyncrasies","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiguelmota%2Fjavascript-idiosyncrasies/lists"}