Можно ли сократить javascript, чтобы избежать if и else?

Я пытаюсь преобразовать фрагмент PHP в javascript:

function year_shortcode() {
    $fromYear = 2010;
    $thisYear = (int)date('Y');
    return $fromYear . (($fromYear != $thisYear) ? '-' . $thisYear : '');
} add_shortcode('year', 'year_shortcode');

Что я сделал до сих пор:

var fromYear='2010';
var thisYear= new Date().getFullYear();

if (fromYear=thisYear) {
    document.write(fromYear);
}
else {
    document.write(fromYear + '-' + thisYear);
}

Я хотел бы избежать операторов if и else и сократить их, как в PHP.

Да вроде так же. Тем не менее, классический способ часто кажется более удобным и читабельным, особенно при использовании в цепочке/множественных действиях.

Lain 11.12.2020 14:52
document.writeне рекомендуется для манипуляций с DOM, так как он устарел, работает медленно и не подходит для любого развивающегося приложения. if (fromYear=thisYear) это опечатка.
Sebastian Simon 11.12.2020 14:52

Вы можете использовать тернарный оператор так же, как и в php. Также вы должны использовать == или лучше === для сравнения равенства, а не =.

Paflow 11.12.2020 14:53

@Paflow да, в JavaScript есть тернарный оператор ? :, но нет, он не такой, как в PHP: правила приоритета другие (в основном противоположные PHP)

Pointy 11.12.2020 14:54

@Pointy О, спасибо, я никогда этого не понимал!

Paflow 11.12.2020 15:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
5
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы могли бы сделать это

И одна вещь, которую следует отметить, = — это оператор присваивания, если вы хотите проверить равенство между двумя значениями, используйте вместо этого ===

document.write(fromYear === thisYear ? fromYear : fromYear + '-' + thisYear)

ваш код печатает fromYear, даже если он такой же, как thisYear. Я хотел бы скрыть fromYear, если он такой же, как thisYear

JackLinkers 11.12.2020 15:07
Ответ принят как подходящий

Я пытался использовать тернарные операторы, как в PHP, благодаря @Pointy и @user4642212 и ответу от @hgb123. Я смог решить свой вопрос с помощью:

document.write((fromYear != thisYear) ? fromYear + " - " + thisYear : thisYear);

Другие вопросы по теме