Как в JS лучше реализовать функции-синонимы?
После первой строчки x и y будут ссылками на одну и ту же функцию. Когда вы присваиваете новое значение y, то y становится ссылкой на новую функцию, а x продолжает ссылаться на старую.
Всё скаазал Riateche; можно добавить, что когда делаете
function(i) { return i*i*i; }
, создаётся новая функция, потому что всякая function(i) {} означает создание новой (почти то же, что new Function(), но по методу исполнения совсем не то, вторая не рекомендуется из-за неявного eval). Поэтому ничего удивительного, что тест показал, что функции разные. А присваивание функций — это присваивание объектов, которое идёт по ссылке.