Насколько опасно в JavaScript на самом деле предполагать, что undefined не перезаписан?

Каждый раз, когда кто-то упоминает тестирование против undefined , , он указывает , что undefined не является ключевым словом, поэтому это может быть установите значение "hello" , поэтому вы должны использовать вместо этого typeof x == "undefined" . Мне это кажется смешным. Никто бы никогда не сделал этого, и если бы они это сделали, это было бы достаточной причиной, чтобы никогда не использовать какой-либо код, который они написали ... верно?

Я нашел один пример человека, который случайно установил undefined на null , и это было дано как причина, чтобы не предполагать, что undefined не перезаписывается. Но если бы они это сделали, ошибка осталась бы незамеченной, и я не вижу, как это лучше.

В C ++ всем хорошо известно, что можно сказать #define true false , но никто никогда не советует избегать true и использовать 0 == 0 вместо. Вы просто предполагаете, что никто никогда не будет достаточно большим придурком, чтобы сделать это, и если они это сделают, никогда больше не будут доверять своему коду.

Укусило ли это когда-нибудь кого-то, кого кто-то назначил на undefined (намеренно), и это нарушило ваш код, или это скорее гипотетическая угроза? Я готов рискнуть и сделать свой код более читабельным. Это действительно плохая идея?

Повторяю, я не спрашиваю, как защититься от переназначенного undefined. Я уже сто раз видел эти трюки. Я спрашиваю, насколько опасно не использовать эти уловки.

83
задан Community 23 May 2017 в 12:17
поделиться