Вам не стоит беспокоиться о том, что undefined будет переименован. Если кто-то переименует undefined, у вас будет гораздо больше проблем, чем с несколькими, если проверки не пройдены. Если вы действительно хотите защитить свой код, оберните его в IFFE (выражение для немедленного вызова функции), например:
(function($, Backbone, _, undefined) {
//undefined is undefined here.
})(jQuery, Backbone, _);
Если вы работаете с глобальными переменными (что уже неверно) в среде браузера, я бы проверил неопределенность следующим образом:
if(window.neverDefined === undefined) {
//Code works
}
Поскольку глобальные переменные являются частью объекта окна, вы можете просто проверить неопределенность вместо приведения к строке и сравнения строк.
Кроме того, почему ваши переменные не определены? Я видел много кода, где они проверяют существование переменных и выполняют некоторые действия, основанные на этом. Ни разу я не видел, где этот подход был правильным.