ruby and js quirks

Post on 29-Jan-2018

1.971 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Ruby & Javascript Quirks

Suman Mukherjee

Inspiration for the talk

Gary Bernhardt’s talk @ CodeMash 2012

https://www.destroyallsoftware.com/talks/wat

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

Javascript

> “John” + {}# 'John[object Object]'

Ruby

> “John” + {}# TypeError: can't convert Hash into String

Javascript

> var3 = var3# ReferenceError: var3 is not defined

Ruby

> var_3 = var_3# nil

Javascript

> [1, 2] + [3, 4]# '1,23,4'

Ruby

> [1, 2] + [3, 4]# [1, 2, 3, 4]

Javascript

Node> {} + []# '[object Object]'

Chrome console> {} + []# 0

Ruby

> {} + []# NoMethodError: undefined method `+' for {}:Hash

Javascript

> [] + {}# '[object Object]'

Ruby

> [] + {}# TypeError: can't convert Hash into Array

Javascript

> [] + []# ‘’

Ruby

> [] + []# []

Javascript

Node> {} + {}# '[object Object][object Object]'

Chrome console> {} + {}# NaN

Ruby

> {} + {}# NoMethodError: undefined method `+' for {}:Hash

Javascript

> “blah” + 3# “blah3”

Ruby

> “blah” + 3 # TypeError: can't convert Fixnum into String

Javascript

> “blah” - 3# NaN

Ruby

> “blah” - 3 # NoMethodError: undefined method `-' for "blah":String

Javascript

> “blah” * 3# NaN

Ruby

> “blah” * 3# "blahblahblah"

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”

Javascript

> 0/0# NaN

> 0.0/0# NaN

Ruby

> 0/0# ZeroDivisionError: divided by 0

> 0.0/0# NaN

Javascript

> parseFloat(“NaN”)# NaN

Ruby

> “NaN”.to_f# 0.0

Javascript

> “” == false# true

> [] == false# true

> 0 == false# true

Ruby

> “” == false# false

> [] == false# false

> 0 == false# false

Javascript

> 0 && []# 0

> [] && 0# 0

> 0 && “”# 0

> “” && 0# “”

> [] && “”# “”

> “” && []# “”

Ruby

> 0 && []# []

> [] && 0# 0

> 0 && “”# “”

> “” && 0# 0

> [] && “”# “”

> “” && []# []

Javascript

> 5 == ‘5’# true

Ruby

> 5 == ‘5’# false

Javascript

> {“grrrhhh”}# 'grrrhhh'

Ruby

> {“grrrhhh”}# SyntaxError: compile error

Javascript

> “a”===new String(“a”)# false

Ruby

> “a”===String.new(“a”)# true

Thank You

Follow me @mukherjeesuman

top related