- 1
- 2
- 3
- 4
- 5
- 6
- 7
setServerURL: function(value) {
if (value) {
return localStorage.setItem('ServerURL', value);
} else {
return delete localStorage['ServerURL'];
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−51
setServerURL: function(value) {
if (value) {
return localStorage.setItem('ServerURL', value);
} else {
return delete localStorage['ServerURL'];
}
}
Ни буквы не придумал - 1:1 как в исходничке...
Алсо, это может быть остатком рефакторинга хранилища в виде обычного объекта, используемого как хэш-таблица, на local storage.
Пиздец какой-то. Как интуитивно то!
А вот delete a уже возвращает false.
Консистентненько. JS ведёт себя так, как будто во всех сущностях (кроме null) существует бесконечное количество несуществующих элементов/полей/свойств со значением undefined.
У a был элемент 100500 со значением undefined (судя по результатам чтения), мы его удалили - записали в него undefined. Это можно? Можно. true.
Если в вашей двойке завёлся Борманд, вы знаете, что делать.
На самом деле Борманда выселят из объекта-обёртки Object(2), а не из самой двойки, в которой он, согласно философии JS, будет продолжать жить.
А вот нихуя! Удаление и запись undefined - разные операции:
Они просто не раскушали говно.
А чому тогда 'a' in a возвращает false?
После удаления в свойстве не лежит ничего (но при чтении возвращается undefined, не кидать же исключение). После записи undefined в свойстве лежит undefined.
> разное ничего
Отлично, отлично. А то я уже начал думать, кого же жс читает, если в свойстве никого нет. Ведь по смыслу утиной типизации вроде бы свойство существует, но как-то отдельно от объекта, судя по результату in.
=== undefined, in, hasOwnProperty - для объектов
=== undefined, arguments.length - для тел функций