Possible Duplicate:
jQuery uses (new Function(“return ” + data))(); instead of eval(data); to parse JSON, why?

Given a string which represents a valid JSON string, is there a difference between these two parsing methods:

var str, obj;

str = '{"prop":"value"}';

// method 1:
obj = eval( '(' + str + ')' );

// method 2:
obj = ( new Function( 'return (' + str + ');' ) )();

I noticed that jQuery uses the second method to parse JSON strings (in environments that lack a built-in JSON parser). I wonder why they don't use the first method. Why create a function object and invoke it when you can just use eval()?

Please close as exact duplicate

Edit
Report