# Hacking JavaScript Complexity - Boise Code Camp 12

## by Jason Denizac

• 994 views

Materials: https://github.com/jasondenizac/bcc12

Given 3/24/2012
Boise State University

### Statistics

Likes
0
4
0
Embed Views
0
Views on SlideShare
994
Total Views
994

## Hacking JavaScript Complexity - Boise Code Camp 12Presentation Transcript

• // hacking// javascript// complexity// @leJDen// Jason Denizac// CC-BY 3.0
• disclaimer:a lot of this is just my opinion, man.
• me:healthwise.org@boisehackersi <3 javascript
• you:beyond beginning javascripthave ever thought... Theres gotta be a better way!
• {} style modules testing
• style {}
• sanity. {}
• {}
• == {}
• == 1. If Type(x) is the same as Type(y), then a. b. c. If Type(x) is Undefined, return true. If Type(x) is Null, return true. If Type(x) is Number, then {} i. If x is NaN, return false. ii. If y is NaN, return false. iii. If x is the same Number value as y, return true. iv. If x is +0 and y is −0, return true. v. If x is −0 and y is +0, return true. vi. Return false. d. If Type(x) is String, then return true if x and y are exactly the same sequence of characters (same length and same characters in corresponding positions). Otherwise, return false. e. If Type(x) is Boolean, return true if x and y are both true or both false. Otherwise, return false. f. Return true if x and y refer to the same object. Otherwise, return false. 2. If x is null and y is undefined, return true. 3. If x is undefined and y is null, return true. 4. If Type(x) is Number and Type(y) is String, 5. return the result of the comparison x == ToNumber(y). 6. If Type(x) is String and Type(y) is Number, 7. return the result of the comparison ToNumber(x) == y. 8. If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y. 9. If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).10. If Type(x) is either String or Number and Type(y) is Object,11. return the result of the comparison x == ToPrimitive(y).12. If Type(x) is Object and Type(y) is either String or Number,13. return the result of the comparison ToPrimitive(x) == y.14. Return false.
• == 1. If Type(x) is the same as Type(y), then a. b. c. If Type(x) is Undefined, return true. If Type(x) is Null, return true. If Type(x) is Number, then {} i. If x is NaN, return false. ii. If y is NaN, return false. iii. If x is the same Number value as y, return true. iv. If x is +0 and y is −0, return true. t?!" v. If x is −0 and y is +0, return true. "Wa vi. Return false. d. If Type(x) is String, then return true if x and y are exactly the same sequence of characters (same length and same characters in corresponding positions). Otherwise, return false. e. If Type(x) is Boolean, return true if x and y are both true or both false. Otherwise, return false. f. Return true if x and y refer to the same object. Otherwise, return false. 2. If x is null and y is undefined, return true. 3. If x is undefined and y is null, return true. 4. If Type(x) is Number and Type(y) is String, 5. return the result of the comparison x == ToNumber(y). 6. If Type(x) is String and Type(y) is Number, 7. return the result of the comparison ToNumber(x) == y. 8. If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y. 9. If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).10. If Type(x) is either String or Number and Type(y) is Object,11. return the result of the comparison x == ToPrimitive(y).12. If Type(x) is Object and Type(y) is either String or Number,13. *apologies to Gary Bernhardt return the result of the comparison ToPrimitive(x) == y.14. Return false.
• === {}
• === {}1. Is it the same type?
• === {}1. Is it the same type?2. Is the value the same?
• === {}1. Is it the same type?2. Is the value the same?* NaN !== NaN
• {}"Warning! JSLint will hurt your feelings."
• modules
• godObject.blah.foo.modulegodObject.blang.other.functionalitygodObject.something.More
• A synchronousM oduleD efinition
• sugarWater.jsdefine([jquery], function (\$) { return function () { \$(<strong/>) .text(Ohh yeahh.jpg) .appendTo(body); };});
• main.jsrequire([jquery, sugarWater, domReady!], function (\$, ohhYeahh) { \$(#refreshing) .on(click, ohhYeahh);});
• require.js
• microjs.com"theres a lib for that"
• testing
• jasmine
• qunit
• sinon
• DEMO TIME Using TDD, JSLint, and modules,make yet another Twitter search visualization- show me a live stream of tweets with #bcc or @BoiseCodeCamp - highlight presenters
• other talks today:Next: Travis Bretton: Server side: Node.js right hereLater: @jarodf: Client side: Backbone.js also right here, 4:30
• get the codegithub.com/jasondenizac/bcc12@leJDen