Past implementations of defrag would assume that the basic structure of the disk was self-consistent. If the filesystem was inconsistent, defragging could turn a slightly corrupt disk into an extremely currupt disk - data could easily be lost.
Running scandisk ensures that the disk structure is self-consistent to start with. Though if you check a disk in modern Windows, remember that "completed successfuly" means the program ran and completed, but doesn't mean there were no disk errors. Check in the event logs - for me that's right click "My Computer", select "Manage", then "Event Viewer".
I'm not sure if that first paragraph still applies. Current filesystems seem less prone to these inconsistencies (though they can certainly still happen - especially if you're prone to switching off the power without doing a clean shutdown), and I wouldn't be surprised if current versions of defrag do more consistency checks. Certainly, when I run defrag, I never bother checking the disk first these days.
If you really need to recover data from a potentially corrupt disk, the first thing to do is to get a complete sector-by-sector backup. Anything you try that can modify the disk may go wrong and do more damage. Anything at all that writes to the disk may result in previously recoverable data being lost.
Except, of course, that the best thing is to have a backup before the corruption happens.