Эти коды линий одинаковы?

Я хочу знать, делают ли эти два сценария одно и то же:

parseInt(num)?num=parseInt(num):num=str.length

а также

num=parseInt(num)||str.length;

А если нет, мне нужно знать, что делают вторые.

3 ответа

Решение

Да, они такие же, с более поздними (оценка короткого замыкания) краткими и красотой JS (или других языков, которые это поддерживают):

num = parseInt(num) || str.length;

Оба в свою очередь являются сокращением этого:

if (parseInt(num)){
   num = parseInt(num);
}
else {
   num = str.length;
}

Хорошая практика:

  • Не зацикливайся var Ключевое слово перед num переменная, иначе она входит в глобальную область видимости.
  • Всегда указывайте базу для parseInt например parseInt(num, 10) если не требуется иное

Показания:

Да, они делают (но второй немного более эффективен, поскольку он не должен бежать parseInt дважды).

Да, они равны Это тоже самое:

num = parseInt(num)?parseInt(num):str.length
Другие вопросы по тегам