Чтобы добавить к существующим ответам о множественном наследовании Java8 с интерфейсами (так же, как Java все еще избегает проблемы с алмазом):
Существует три правила:
Значения, которые вы получаете в isMobileDevice
, не являются логическими значениями (true
, false
), а являются строками ('true'
, 'false'
).
При оценке в булевом контексте оба значения эквивалентны true
(булево).
Вы должны сравнить isMobileDevice
со строкой:
if (isMobileDevice === 'true') {
// do something
} else {
// do something else
}
При использовании в логическом контексте (то есть как условия) false
, 0
, ""
, null
, [1112 ] и NaN
считаются false
, все остальные значения считаются true
.
Подробнее о значении truey в JavaScript: https://developer.mozilla.org/en-US/docs/Glossary/Truthy
Проверьте, что значения также являются строками, а не просто логическими, поскольку false
не совпадает с 'false'
. То же самое с true
и 'true'
.
let isMobileDevice = req.headers["is-mobile-device"];
console.log(isMobileDevice);
if(isMobileDevice==true || isMobileDevice=='true') {
console.log("Mobile client");
return res.sendStatus(200);
}
else {
console.log("Web Client");
return res.sendStatus(200);
}
Вы также можете изменить if condition
, как показано ниже
if (Boolean(isMobileDevice)) {
// do something
} else {
// do something else
}