Loading repository data…
Loading repository data…
miguelmota / repository
A bunch of Javascript idiosyncrasies to beginners.
This is a collection of things in JavaScript that may not be well recognized, espcially to beginners.
Disclaimer: 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.
In no particular order:
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"
Q. What's the result?
function f() {
return 'foo';
}
(function() {
if (1 === 0) {
function f() {
return 'bar';
}
}
return f();
})();
A.
"bar"
Q. What's the result?
(function() {
return NaN === NaN;
})();
A.
false
Q. What's the result?
(function() {
function foo() {
return 'a';
}
return foo();
function foo() {
return 'b';
}
})();
A.
"b"
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
Q. What's the result?
(function(a, b) {
arguments[1] = 3;
return b;
})(1, 2);
A.
3
Q. What's the result?
(function(a, b, c) {
delete arguments[0];
return arguments.length;
})(1, 2, 3);
A.
3
Q. What's the result?
(function() {
return (function (a, b) {}).length;
})();
A.
2
Q. What's the result?
(function(a, b) {
var foo, bar;
foo = (bar = a, b);
return foo;
})(1, 2);
A.
2
Q. What's the result?
(function(undefined) {
var foo;
return foo === undefined;
})(true);
A.
false
Q. What's the result?
(function(n) {
return ~(n);
})(-3);
A.
2
Q. What's the result?
(function(n) {
return ~~n;
})(-1.5);
A.
-1
Q. What's the result?
(function(x) {
return !!x;
})('a');
A.
true
Q. What's the result?
(function() {
return typeof null === 'null';
})();
A.
false
Q. What's the result?
(function() {
return +(new Date())
})();
A.
1393812837139
Q. What's the result?
(function() {
return (new Date()).valueOf();
})();
A.
1393812845834
Q. What's the result?
(function() {
return ''+(new Date());
})();
A.
"Sun Mar 02 2014 18:14:01 GMT-0800 (PST)"
Q. What's the result?
(function() {
var foo = 'a';
(function(foo) {
foo = 'b';
})(foo);
return foo;
})();
A.
"a"
Q. What's the result?
(function() {
return arguments.toString();
})();
A.
"[object Arguments]"
Q. What's the result?
(function() {
return (function(){}) === (function(){});
})();
A.
false
Q. What's the result?
(function(n) {
return n === new Number(n);
})(10);
A.
false
Q. What's the result?
(function(x) {
return new String(x) === x;
})('a');
A.
false
Q. What's the result?
(function() {
return [1+1] === [2];
})()
A.
false
Q. What's the result?
(function() {
return {foo: 'bar'} === {foo: 'bar'};
})();
A.
false
Q. What's the result?
(function() {
for(;;);
return 1;
})();
A.
*Infinite loop*
Q. What's the result?
(function() {
return ['10','10','10','10'].map(parseInt);
})();
A.
[10, NaN, 2, 3]
Q. What's the result?
(function() {
var o = {
toString: function() {
return 'a';
},
valueOf: function () {
return 1;
}
};
return o + o;
})();
A.
2
Q. What's the result?
(function() {
var f = function g() {
return 1;
};
return g();
})();
A.
ReferenceError: g is not defined
Q. What's the result?
(function() {
return void (1+1);
})();
A.
undefined
Q. What's the result?
(function() {
var a = [1,2];
var b = a;
a = [1,2];
return a === b;
})();
A.
false
Q. What's the result?
(function() {
var x = 1;
return (function () {
return x;
var x = 2;
})();
})();
A.
undefined
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
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"
Q. What's the result?
(function() {
return ('3' > '12') === ('03' > '12');
})();
A.
false
Q. What's the result?
(function() {
return Math.pow(2,53) === (Math.pow(2,53) + 1);
}();
A.
true
Q. What's the result?
(function() {
return Math.pow(2,1024) === Infinity;
})();
A.
true
Q. What's the result?
(function() {
return (Infinity - 100) === Infinity;
}();
A.
true
Q. What's the result?
(function() {
return (0.1 + 0.2 === 0.3);
})();
A.
false
Q. What's the result?
(function() {
return (0.1).toFixed(20);
})();
A.
"0.10000000000000000555"
Q. What's the result?
(function() {
return parseFloat('3.3.4');
})();
A.
3.3
Q. What's the result?
(function() {
return 010;
})();
A.
8
Q. What's the result?
(function() {
return (parseInt('10000000000000000', 10) ===
parseInt('10000000000000001', 10)
);
})();
A.
true
Q. What's the result?
(function(n) {
return (Function)('var n = n || 2; return n;')(n);
})(1);
A.
2
Q. What's the result? (assuming window scope)
var a = 1;
b = 1;
(function() {
return (delete window.a) === (delete window.b);
})();
A.
false
(function(x) {
var isMatch,
regex = /[\w]/gi;
return (regex.test(x) === regex.test(x));
})('a');
A.
false
Q. What's the result?
(function() {
return ![];
})();
A.
false
Q. What's the result?
(function() {
return +[];
})();
A.
0
JSBin | [JSBin explained](http: