Skip to content

Instantly share code, notes, and snippets.

@cspanring
Last active December 15, 2015 03:39
Show Gist options
  • Select an option

  • Save cspanring/5195547 to your computer and use it in GitHub Desktop.

Select an option

Save cspanring/5195547 to your computer and use it in GitHub Desktop.
JavaScript gotchas - http://mistakes.io/#5195547
// primitive vs complex numbers
var nrComp = new Number(3);
var nrPrim = Number(3);
nrComp;
nrPrim;
nrComp === nrPrim;
nrComp == nrPrim;
typeof nrComp;
typeof nrPrim;
// inheritance
function Const( veggie ) {
var veggie = veggie;
this.fruit = "orange";
this.get_veggie = function() {
return veggie;
};
}
Const.prototype.spice = "pepper";
typeof Const;
var sub = new Const( "carrot" );
typeof sub;
sub.constructor;
sub.fruit;
sub.veggie;
sub.get_veggie();
sub.spice;
sub.spice = "salt";
sub.spice;
delete sub.spice;
sub.spice; // HA!
delete Const.prototype.spice;
sub.spice;
Const.prototype.spice = "cumin"; // HA!
// object references
var objA = new Object();
objA.tree = "oak";
var objB = objA;
objB.tree;
delete objA.tree;
objA.tree;
objB.tree;
Object.prototype.tree = "fir";
objA.tree = "maple";
objB.tree; // HA!
// hoisting - http://jsbin.com/adokem/2/edit
var x = 1;
(function () {
console.log(x);
var x = 2;
}());
// vs
function number() {
return 1;
}
(function () {
console.log(number()); // function declaration is hoisted
function number() {
return 2;
}
}());
// vs
(function () {
try {
number();
} catch (e) {
console.log(e.message);
}
var number = function number() {
return 3;
};
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment