Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Использование for in (https://javascript.ru/forum/misc/51040-ispolzovanie.html)

kostyanet 22.10.2014 15:52

Цитата:

Сообщение от terminator-101
Достаточно делать

if(!(this.hasOwnProperty(i))) break

В смысле не продлевать? А кто продлевает если нет смысла?

terminator-101 22.10.2014 16:25

Цитата:

Сообщение от kostyanet
А кто продлевает если нет смысла?

Да сколько кода я не наблюдал, я вообще брейк никогда не видел. Похоже разрабы вообще не понимают обычно процесс итерации.

kostyanet 22.10.2014 16:40

Есть такое дело, break и continue неведомы многим, а некоторыми даже порицаются, я уж не говорю о таком кощунстве как return из тела цикла, как из тела кусок вырываешь понимаешь.

Erolast 22.10.2014 16:48

Цитата:

Сообщение от terminator-101 (Сообщение 336843)
Считается, что for in медленный. Это действительно так, но я ща подумал, он сука, медленный не столько сам по себе, сколько из-за этого:

//говнокод

Именно так его обычно пользуют. А цепочка прототипов может ведь состоять и из тыщи объектов. Соответственно, если нужны только свойства самого объекта, без прототипов, использование по типу monkeyFu просто недопустимо. Это серьезный косяк.

Охренеть сенсация.

terminator-101 22.10.2014 16:48

Цитата:

Сообщение от kostyanet
Есть такое дело, break и continue неведомы многим, а некоторыми даже порицаются, я уж не говорю о таком кощунстве как return из тела цикла, как из тела кусок вырываешь понимаешь.

Да, это все херовое влияние двух дурачков -- Дейкстры и Вирта

kostyanet 22.10.2014 18:00

Цитата:

Сообщение от Erolast
Охренеть сенсация.

Тут сам постановка интереса: это сколько надо написать чтобы задуматься о быстроте форичей?

Насколько я вижу этот сайт целиком на js работает и вроде не тормозит. Может мало форичей, то есть форинов?

terminator-101 23.10.2014 10:56

Цитата:

Сообщение от kostyanet
о быстроте форичей?

Кстати, если уж зашел разговор о быстроте форичей, то тут при помоши нелокальных выходов тоже можно выжать немало, +еще кое-какие плюшки.
arr=[1, 2, 3, 4, 5]

throw_=function(wanted, x){if(x===wanted) throw x}
return_=function(wanted, x){if(x===wanted) return x}

main=function(wanted, f, comment){
try{
arr.forEach(function(x){console.log(comment+": "+x); f(wanted, x)})
}catch(ret){return ret}
}

console.log("from throw_ call: "+main(3, throw_, "throw"))
console.log("from return_ call: "+main(3, return_, "return"))

kobezzza 27.10.2014 09:59

ECMAScript говорит
Цитата:

Механизм и порядок перечисления свойств (шаг 6.a в первом алгоритме и шаг 7.a во втором алгоритме) не указан. Свойства перечисляемого объекта могут быть удалены во время перечисления. Если свойство, ещё не посещённое при перечислении, удаляется, то оно не будет посещено. Если во время перечисления к объекту добавляются новые свойства, их посещение в процессе текущего перечисления не гарантируется. Одно имя свойства нельзя посетить более одного раза во время перечисления.
Поэтому уповать на последовательность свойств нельзя.


Часовой пояс GMT +3, время: 17:16.