WPA/WAP2 does not use a dedicated random salt. Instead, it was designed to use the SSID as a salt value. This is better than no salt but it does mean some access points are vulnerable. For quite a while most routers would ship with a static SSID ('linksys' or 'default'). So while hackers can't just precompute a single set of passphrases they could precompute common passwords against common SSIDs. Church of Wifi has some rainbow tables (1 million common passphrases for 1,000 common SSID = 33GB) as well as general information on wifi cracking.
So WPA/WPA2 isn't as bad as WEP but relying on a low entropy value like SSID made it more vulnerable than it needed to be. That vulnerability was made worse by companies shipping hundreds of millions of routers for years with static SSIDs. Many people never changed them, and some who did picked other equally bad/common SSIDs.
The most common SSIDs
<No current ssid>
Today most routers use a pseudo-random SSID like
linksys_AUENFJS22 instead of just
linksys but there are a lot of vulnerable hotspots out there.
The hashing function is PBKDF2 which uses multiple rounds to slow down attacks. The entire authentication process is far too complex to be a good fit for SO.
To protect yourself from precomputation you should ensure you use a unique SSID. One thing I have seen more than once is someone thinking they are secure by disabling the SSID except that is common enough that it became an entry in most rainbow tables.