6.49 Difference between Block, With and Module

Block and Module have values, the last expression evaluated is their value, we can see this by making a Grid (or just printing). But module leaked symbols have $ signs

Remove["Global`*"] 
Grid[{{Module[{x}, x]}}, Frame -> All]
 

Modules and Blocks both execute if they are in the path of code, without calling them. Block:

Remove["Global`*"] 
x = 4; 
Block[{}, If[x == 4, x = 3]]; 
x 
 
Out[217]= 3
 

Module:

Remove["Global`*"] 
x = 4; 
Module[{}, If[x == 4, x = 3]]; 
x 
 
Out[221]= 3