CoffeeScript, по замыслу, не позволяет скрывать ранее объявленную переменную.Тем не менее, есть один случай, когда это все еще происходит:
abc = ->
a = 1
func = (a) ->
a = 2
return
func()
alert(a)
return
Это приведет к 1
.Поскольку a
является параметром функции, он является локальным для области действия функции.
Кстати, вы можете переписать его как
abc = ->
a = 1
do (a) -> a = 2
alert a
return
, где do (a) -> a = 2
эквивалентно ((a) -> a = 2)()
.