$.getJSON выполняется асинхронно. Полученные данные записались в data, но console.log(data) выводит undefined, потому что на момент вызова в переменной data ничего нет. Если нужно выполнить какую-то функцию после асинхронного запроса, то можно использовать колбэк или промис