GetJSON devuelve datos

Aquí está mi código:

var name; function getFBName(username) { $.getJSON('http://graph.facebook.com/' + username, function (d) { name = d.name; }); } getFBName("zuck"); console.log(name); 

Estoy luchando desde horas pero no puedo obtener la función getFBName para devolver el nombre del usuario.

Este es el JSON por cierto:

 { "id": "4", "first_name": "Mark", "gender": "male", "last_name": "Zuckerberg", "link": "https://www.facebook.com/zuck", "locale": "en_US", "name": "Mark Zuckerberg", "username": "zuck" } 

Como dijo @ jwatts1980, esta es una cuestión de orden de ejecución. $.getJSON regresará inmediatamente, antes de que la respuesta haya llegado al cliente, por lo que cuando ejecute console.log , seguirá esperando. Una posible solución es:

 function getFBName(username) { $.getJSON('http://graph.facebook.com/' + username, function (d) { console.log(d.name); }); } getFBName("zuck"); 

Que registrará Mark Zuckerberg correctamente. Si tiene varias formas de manejar la salida, también puede ser interesante configurar una función de callback :

 function getFBName(username, callback) { $.getJSON('http://graph.facebook.com/' + username, function (d) { callback(d.name); }); } function handleName(name) { // Do a lot of things here console.log(name); } getFBName("zuck", handleName);