I recently went through this.
I was called by a recruiter working for a company I was interested in. Asked me questions about my experience, why I wanted to work there, etc. Then the dreaded "what are your salary requirements?"
My answer was "I'd rather hold off on the salary discussion until I have a chance to see what my responsibilities are, in addition to seeing how my skills can help your company."
He accepted that answer, but told me that this discussion will have to happen at some point. I told him I agreed, but that point was not at this time.
Companies say they do this because "we don't want to waste time interviewing someone who is over/under our range". But in my experience, that's total bs. If they are worried about things like that, they don't pay enough. They ask that question to get a leg up over the negotiation process early on.
If the recruiter didn't take that answer well, I would have asked for a range they were thinking for the position, and asked for the upper end of that. Remember, whoever gives a number first in a negotiation loses and in the pre-interview stage, you have less power than the company does. After the interview, however, your power increases greatly because the company has invested a lot of time in you at this point. So taking this into account, it is better to wait until you have the interview to discuss numbers.
I have had instances where the recruiter didn't share the range, and said that if I didn't give a salary requirement then there was no point of further discussion. I told them have a nice day and good luck. That is a hardball tactic that is played way too early in the process, and tells me the company is looking to pay the lowest amounts possible for people.