Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Интересные ссылки и их обсуждение (https://javascript.ru/forum/offtopic/45898-interesnye-ssylki-i-ikh-obsuzhdenie.html)

l-liava-l 10.10.2014 02:37

Цитата:

l-liava-l,
ну вот, чем создание новой переменной не вариант? Да, будет лишняя переменная и грязный код. Но он итак грязный.
Говорюж, многие так и делают)

Но есть более важные вещи и на них стоит обратить внимание в первую очередь: начиная от шума {} и никому ненужного null заканчивая тем что код не пишет сам себя.;)

let, как по мне - вообще бред, я даже представить не могу такую конструкцию которя одновременно будет и не говнокодом и там будет нужен let.

Классы... не пишу на кофе везде исключительно из-за них, кажуться неповоротливыми

kobezzza 10.10.2014 09:33

Цитата:

let, как по мне - вообще бред, я даже представить не могу такую конструкцию которя одновременно будет и не говнокодом и там будет нужен let.
:D

Как по мне функциональная область видимости - это изначальный феил и поэтому let для меня оч важная штука, которую я юзаю просто повсеместно. Например в Snakeskin тоже блочная область видимости у переменных.

- template foo()
  - for var i = 0; i < 10; i++
    ? console.log(i) // 0, 1, 2 ...
  ? console.log(i) /// Error, i is not defined


Вообще я для себя сделал такое правило: var для глобальных переменных и локальных переменных функций высшего уровня.

Цитата:

я даже представить не могу такую конструкцию которя одновременно будет и не говнокодом и там будет нужен let.
for (let i = 0; i < 10; i++) {
    ...
}

for (let i = 0; i < 10; i++) {
    let someVal; // использование с var в данном примере приведёт к ошибке
                     // придётся писаться var someVal = void 0;

    if (...) {
        someVal = true;
    }

    if (someVal ) {
        ...
    }
}


и т.д.

Цитата:

Сообщение от Safort (Сообщение 334543)
kobezzza,

Да что же это такое?! Ещё один транслятор, который поддерживает многие крутые плюхи из ES6, но не может let! Как так вообще? Значит, классы они осилили, а какой-то let - нет?

Слоупоки, но тебе никто не мешает:

1) Таки завести es6transpiler ||
2) Прикрутить https://github.com/olov/defs к своему транслятору.

Цитата:

А в js нет блочной области видимиости, как тут let сделаешь?
Молча :)

Цитата:

Инициализация функии дело очень затртаное, вангую что не рационально делать такие хаки, вот и не сделали.
Никто так не делает, а юзают статический анализ и добавление префиксов.

Цитата:

Да, будет лишняя переменная и грязный код. Но он итак грязный.
Код, который не предназначен для ручного редактирования человеком (а результат работы транслятора именно такой код) может быть любым, лишь бы он не бажил и не тормозил :)

Safort 10.10.2014 10:47

kobezzza,
Цитата:

1) Таки завести es6transpiler ||
Так я хотел, но оно не завелось из-за бага(ты ещё про него в ишью написал)

Цитата:

2) Прикрутить https://github.com/olov/defs к своему транслятору.
Спасибо, сейчас посмотрю что за зверь такой)
Но в моём случае было бы не плохо, если бы Traceur просто не трогал let, т.к. поддержка старых браузеров мне не нужна, а в новых это всё уже есть.

kobezzza 10.10.2014 10:56

Цитата:

Так я хотел, но оно не завелось из-за бага(ты ещё про него в ишью написал)
Ну я же завёл :) Кстати, termi писал, что установка Cygwin также пофиксит баг.

Safort 10.10.2014 11:32

kobezzza,
Цитата:

Ну я же завёл
Ну а я нет ;(

Цитата:

Кстати, termi писал, что установка Cygwin также пофиксит баг.
Ок, дам ему второй шанс)

l-liava-l 10.10.2014 12:21

Цитата:

Молча
Потом описал возможные решения, как рациональное так и нет. вредный.

Цитата:

for (let i = 0; i < 10; i++) {
...
}

for (let i = 0; i < 10; i++) {
let someVal; // использование с var в данном примере приведёт к ошибке
// придётся писаться var someVal = void 0;

if (...) {
someVal = true;
}

if (someVal ) {
...
}
}
Цитата:

которя одновременно будет и не говнокодом и там будет нужен let.
Использование кучи циклов в одной функции не айс, это плохо. (имхо) нид выносить в отдельные. Поэтому говнокод.
Если дело в каких то сложных вычислениях, где для каждого цикла функцию новую поднимать напряжно (не могу представить), то тут конечно пригодится блочная область видимости (возможно, ведь тоже какие то ресурсы тратятся), да и не жизненно мне кажется, пока не сталкивался.
Короче лично я никогда не испытвал надобности в let, но опыта пока мало так что посмотрим)

Gozar 10.10.2014 12:26

Цитата:

Сообщение от l-liava-l
Использование кучи циклов в одной функции не айс

Мсье внезапно стал профессор?

Цитата:

Сообщение от l-liava-l
Поэтому говнокод.

Эка нынче пошли критерии говнокода, 2 цикла и сразу говнокод.


kobezzza 10.10.2014 12:35

l-liava-l, сразу видно что ты не писал никогда никаких парсеров или различных плясок с графами / векторами :)
Да и вообще, var был архитектурной ошибкой JS, и let был введён как костыль. Обрати внимание, что const тоже имеет блочную область видимости. А в LLJS вообще только блочная область видимости.

l-liava-l 10.10.2014 13:55

Цитата:

Эка нынче пошли критерии говнокода, 2 цикла и сразу говнокод.
На 2 цикла можно и var написать, а 10 циклов в одной функции не круто (пока не столкнулся с потребностью)

Цитата:

Мсье внезапно стал профессор?
Тебе что в определенный момент справку выдали? Это моя точка зрения, возможно ошибочная, пытаемся вот разобраться. бомбануло

Цитата:

l-liava-l, сразу видно что ты не писал никогда никаких парсеров или различных плясок с графами / векторами
Парсеры писал, плясок с графами / векторами нет. (хотя если под вектором ты имеешь ввиду array то писал).
Там же обычно вложенности, если не вложенность то это уже отдельная операция и ее можно вынести в другую функцию.
Цитата:

var был архитектурной ошибкой JS
Цитата:

Обрати внимание, что const тоже имеет блочную область видимости.
Цитата:

А в LLJS вообще только блочная область видимости.
Аргумент, как бы наталкивет на мысль что var действительно ошибка. :), но функция это тоже, по сути, блок.. let костыль, получается так, но мне он не очень нужен.

melky 10.10.2014 13:56

Цитата:

Сообщение от l-liava-l
Использование кучи циклов в одной функции не айс, это плохо

от них не всегда можно избавиться


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