Wolves also have the option to extend the 20-year-old's deal by a further 12 months when it expires.
The Wales Under-21 international has made 34 appearances for Kenny Jackett's side since arriving at Molineux from Newport County in January 2013.
"I'm delighted to have signed the new deal. We've been talking about it for a while and I see it as the next stepping stone in my career," Evans told the club's official website.
"I know sometimes people think that players get a new contract and start to relax – that's not what I am going to be doing. I want to kick on now, keep improving and trying to keep my place in the team."
Evans has played six games for Wolves during the current campaign.