ruby and js quirks
TRANSCRIPT
![Page 1: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/1.jpg)
Ruby & Javascript Quirks
Suman Mukherjee
![Page 2: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/2.jpg)
Inspiration for the talk
Gary Bernhardt’s talk @ CodeMash 2012
https://www.destroyallsoftware.com/talks/wat
![Page 3: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/3.jpg)
Javascript
> var1 = var2# ReferenceError: var2 is not defined
> var1ReferenceError: var1 is not defined
Ruby
> var_1 = var_2# NameError: undefined local variable or method var2
> var_1# nil
![Page 4: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/4.jpg)
Javascript
> “John” + {}# 'John[object Object]'
Ruby
> “John” + {}# TypeError: can't convert Hash into String
![Page 5: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/5.jpg)
Javascript
> var3 = var3# ReferenceError: var3 is not defined
Ruby
> var_3 = var_3# nil
![Page 6: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/6.jpg)
Javascript
> [1, 2] + [3, 4]# '1,23,4'
Ruby
> [1, 2] + [3, 4]# [1, 2, 3, 4]
![Page 7: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/7.jpg)
Javascript
Node> {} + []# '[object Object]'
Chrome console> {} + []# 0
Ruby
> {} + []# NoMethodError: undefined method `+' for {}:Hash
![Page 8: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/8.jpg)
Javascript
> [] + {}# '[object Object]'
Ruby
> [] + {}# TypeError: can't convert Hash into Array
![Page 9: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/9.jpg)
Javascript
> [] + []# ‘’
Ruby
> [] + []# []
![Page 10: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/10.jpg)
Javascript
Node> {} + {}# '[object Object][object Object]'
Chrome console> {} + {}# NaN
Ruby
> {} + {}# NoMethodError: undefined method `+' for {}:Hash
![Page 11: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/11.jpg)
Javascript
> “blah” + 3# “blah3”
Ruby
> “blah” + 3 # TypeError: can't convert Fixnum into String
![Page 12: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/12.jpg)
Javascript
> “blah” - 3# NaN
Ruby
> “blah” - 3 # NoMethodError: undefined method `-' for "blah":String
![Page 13: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/13.jpg)
Javascript
> “blah” * 3# NaN
Ruby
> “blah” * 3# "blahblahblah"
![Page 14: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/14.jpg)
Javascript
> parseInt(undefined)# NaN
> parseInt(null)# NaN
> parseInt(“”)# NaN
> undefined.toString()# TypeError: Cannot call method 'toString' of undefined
> null.toString()# TypeError: Cannot call method 'toString' of null
> 10.toString()# SyntaxError
> (10).toString()# ’10’
Ruby
> nil.to_i# 0
> “”.to_i# 0
> nil.to_s# “”
> 10.to_s# “10”
![Page 15: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/15.jpg)
Javascript
> 0/0# NaN
> 0.0/0# NaN
Ruby
> 0/0# ZeroDivisionError: divided by 0
> 0.0/0# NaN
![Page 16: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/16.jpg)
Javascript
> parseFloat(“NaN”)# NaN
Ruby
> “NaN”.to_f# 0.0
![Page 17: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/17.jpg)
Javascript
> “” == false# true
> [] == false# true
> 0 == false# true
Ruby
> “” == false# false
> [] == false# false
> 0 == false# false
![Page 18: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/18.jpg)
Javascript
> 0 && []# 0
> [] && 0# 0
> 0 && “”# 0
> “” && 0# “”
> [] && “”# “”
> “” && []# “”
Ruby
> 0 && []# []
> [] && 0# 0
> 0 && “”# “”
> “” && 0# 0
> [] && “”# “”
> “” && []# []
![Page 19: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/19.jpg)
Javascript
> 5 == ‘5’# true
Ruby
> 5 == ‘5’# false
![Page 20: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/20.jpg)
Javascript
> {“grrrhhh”}# 'grrrhhh'
Ruby
> {“grrrhhh”}# SyntaxError: compile error
![Page 21: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/21.jpg)
Javascript
> “a”===new String(“a”)# false
Ruby
> “a”===String.new(“a”)# true
![Page 22: Ruby and JS quirks](https://reader034.vdocument.in/reader034/viewer/2022050613/5469b9f0af7959cb768b53ae/html5/thumbnails/22.jpg)
Thank You
Follow me @mukherjeesuman