sarex,
Похоже, вы меня дважды не поняли.
Во-первых, я использовал JSON.stringify только для того, чтобы нормально отобразить в alert первый элемент вашего массива search_hints - для визуализации того факта, что массив загружен.
Вот зачем нужен JSON.stringify - сравните результат работы двух алертов:
var search_hints = [{label:"похожий запрос", value:"ссылка на запрос"},
{label:"другой запрос", value:"ссылка на другой запрос"}];
alert(search_hints[0]);
alert(JSON.stringify(search_hints[0]));
Вы же можете использовать этот массив так, как вам нужно.
Во-вторых, этот массив доступен не сразу после запуска MyFunc, а только после завершения загрузки скрипта и обработки его DOM.
Моя функция waitHints ждет появления массива в DOM.
Поэтому я что-то сомневаюсь, что вам удалось решить проблему изменением места размещения скрипта - дело не в месте, а во времени.
Я попробовал ваш новый вариант - результат тот же, массив доступен не сразу.