It depends on the smalltalk platform you choose. Basically, you have local variable locking on all smalltalk platforms. There are IMHO two types of implementations. If there is no full support for closure, local variables are shared by local variables of the method surrounding this block. To do this, you need to know how to solve some problems. To fully support closure, local variables exist and work as you might expect.
Squeak and Pharo used locales that are shared by this method. There is currently a virtual machine with full closure support, and Pharo fully supports it, and I think Squeak too. I think the gem does not have full closure support. I do not know about VaST and VisualWorks.
You can always check it by doing the following:
((1 to: 5) collect: [:i| [ | local | local := i ]]) collect: [:each| each value]
Here you get
if there is full support for closing and
if | local | shared with the method.
source share