Cons:
Initializing a variable inside a branch statement (IF...THEN) gives strange behavior to future variable initialization, more typing/planning
Pros:
Allows cleaner code, catch bugs immediately upon pressing start, you organize your variables better, it replicates a serious programming language, it gets you into a good habit, in the long run it allows you to make huge projects much easier.