> variable should be captured by value and it did not so Yes, this is what confused me too. `let a: int = b` means that it's immutable and copied by value.
> We changed it for better performance and better JavaScript interop. Can't comment about the performance. But as far as I know in JavaScript this behavior (lack of scope for if/for/etc statements) considered as unfortunate design mistake that's impossible to fix due to backward compatibility.