1
0
Fork 0
mirror of https://github.com/jashkenas/coffeescript.git synced 2022-11-09 12:23:24 -05:00
jashkenas--coffeescript/test/test_existence.coffee

58 lines
877 B
CoffeeScript
Raw Normal View History

puts(if my_special_variable? then false else true)
2010-01-01 12:41:55 -05:00
my_special_variable: false
puts(if my_special_variable? then true else false)
# Existential assignment.
a: 5
a: null
a ?= 10
b ?= 10
puts a is 10 and b is 10
# The existential operator.
z: null
x: z ? "EX"
puts z is null and x is "EX"
# Only evaluate once.
counter: 0
get_next_node: ->
throw "up" if counter
counter++
puts(if get_next_node()? then true else false)
# Existence chains, soaking up undefined properties:
obj: {
prop: "hello"
}
puts obj?.prop is "hello"
2010-02-02 10:43:23 -05:00
puts obj.prop?.length is 5
2010-02-02 10:43:23 -05:00
puts obj?.prop?.non?.existent?.property is undefined
# Soaks and caches method calls as well.
arr: ["--", "----"]
puts arr.pop()?.length is 4
puts arr.pop()?.length is 2
puts arr.pop()?.length is undefined
puts arr[0]?.length is undefined
puts arr.pop()?.length?.non?.existent()?.property is undefined