Last active
December 15, 2015 03:39
-
-
Save cspanring/5195547 to your computer and use it in GitHub Desktop.
JavaScript gotchas - http://mistakes.io/#5195547
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // 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