Indeed, the definition of "perfect competition" in economics includes that all participants have perfect information.
But, that's actually the reason companies hate this law: in "perfect competition" no long-term economic profit is possible. Long-term profits are the result of when a market disobeys the definition of "perfect competition," such as when there's information asymmetry, patents and trade secrets to protect innovation, or when barriers to entry are significant.
In this case, hiding salary ranges from employees provides the employer an obvious benefit in that they know how much is budgeted for the position, but a candidate doesn't get that information when giving their salary requirements. I recently had to play a round of "don't give a number" with a recruiter last week. Needless to say, that didn't go very far.
In my case, it was more that the recruiter wouldn't give any sense of what their number was. I told them it was like they were selling a home and advertising an open house without an asking price or any pictures of the inside. I wouldn't waste 20 minutes on an open house for a place that wouldn't work for me, would you?
They just clamped down on "I'm not at liberty to say." So, I told them to get back to me when they have a little more liberty.
What I usually say in those initial conversations is something like "I don't have any real requirements beyond the amount that pays my bills. And, at this point, I don't know enough about the job, the team, management, benefits, etc. or the value I could bring, to give an educated number."
That usually satisfies them on the first phone call.
This "you say a number first" game has to end. I had a memorably surreal conversation with a recruiter that kind of went like this:
RECRUITER: Tell me what your current salary is.
ME: No. I'm not going to disclose this. Why don't you tell me what the range is for this role.
RECRUITER: It depends on what you're currently making.
ME: How does what I'm currently making change what value I'm offering to the company? I have a range, you have a range, let's just figure out where it overlaps.
RECRUITER: OK then you tell me how much do you want.
ME: $500K (knowing this was a ridiculous number)
RECRUITER: HAHAHAHAROTFL
ME: See how stupid this is? You obviously have a range and that number is outside of it. I'm not going to negotiate against myself.
Yeah, that's roughly how my conversation went, too. It's too bad, because if the role had had competitive comp (and, I strongly suspect they wouldn't have been competitive, based on what little info I was able to drag out of the recruiter), I would have totally gone through with the interview process. Oh well.
The only way I know of to break through that kind of BS gamesmanship is to do a lot of research and determine what the market salary distribution is for comparable roles. Sites like comp.fyi and payscale.com have been helpful for me here.
BTW, if you just want to get offer numbers on comp.fyi, use 0 years at company. If you need more data, you can try including 1 or 2 years at company, but, if you start including too much, you're going to lose the original offer numbers in the noise.
But, that's actually the reason companies hate this law: in "perfect competition" no long-term economic profit is possible. Long-term profits are the result of when a market disobeys the definition of "perfect competition," such as when there's information asymmetry, patents and trade secrets to protect innovation, or when barriers to entry are significant.
In this case, hiding salary ranges from employees provides the employer an obvious benefit in that they know how much is budgeted for the position, but a candidate doesn't get that information when giving their salary requirements. I recently had to play a round of "don't give a number" with a recruiter last week. Needless to say, that didn't go very far.