Новости‎ > ‎

Перестаньте использовать let или чем бы заменить if?

Отправлено 22 июл. 2017 г., 2:43 пользователем Denis Baskovsky
Не безрезультатно веду пропаганду никогда не использовать тернарные операторы. if-else блоки более читаемы и понятны. В подтверждение приведу примерный код, который недавно пришлось править: 
(true) ? (() => {
  // some code
})() : void(0)

Зачем так писать? Непонятно. Если требуется один if, тогда позвольте писать хотя бы так:
(true) && (() => {
  // some code
})()

А теперь сравните с привычным if:
if (true) {
  console.log(42)
}

С другой стороны, используя тернарные операторы можно делать такие конструкции:
const foo = (true) ? (() => 'bar')() : (() => 42)()

Вместо таких:
let foo
if (true) {
  foo = 'bar'
} else {
  foo = 42
}

А в этом есть смысл. Около полугода назад пришел к мысли что неплохо было бы вообще исключить использование let и var, заменив их на const во всех случаях.

В случаях с неизвестной заранее переменной:
let x
if(some) {
  x = 'foo'
} else {
  x = 'bar'
}

Инициализировать ее через самовызывающуюся функцию:
const x = (() => {
  if(some) {
    return 'foo'
  } else {
    return 'bar'
  }  
})()

Сейчас, к сожалению, в JS существую сложности для использования const в иттерациях без оверхеда. Хотелось бы писать как-то так:
([0..Infinity]).forEach((e, i) => {
  console.log(i)
})

Но пока приходится разруливать такие штуки через циклы с let:
for (let i = 0; i < Infinity; i++) {
  console.log(i);
}
Comments