Перевод кода Dashcode
-
21-09-2019 - |
Вопрос
быстрый, вероятно, простой вопрос, ответ на который, вероятно, является "наилучшей практикой".
Я следую руководству по веб-приложению Safari для мобильных устройств с пользовательским шаблоном, и для изменения представлений вокруг этого кода используется:
function btnSave_ClickHandler(event)
{
var views = document.getElementById('stackLayout');
var front = document.getElementById('mainScreen');
if (views && views.object && front) {
views.object.setCurrentView(front, true);
}
}
Мой вопрос касается только if
условное утверждение.Что говорит этот триплет, и почему каждая из этих вещей должна быть проверена, прежде чем представление может быть изменено?Делает views.object
просто проверьте, реагирует ли переменная views на метод object?Почему это так важно?
Редактировать - Это / было основным моментом этого вопроса, и он рассматривает не Javascript как язык, а как if
циклы работают, но скорее ПОЧЕМУ именно эти 3 вещи нужно проверять:
При каких сценариях может views
и front
не существует?
Обычно я не пишу свой код так избыточно.Если имя моей таблицы MySQL не меняется, я просто скажу UPDATE 'mytable' WHERE...
вместо гораздо более подробного (и, на мой взгляд, избыточного)
$mytable = "TheSQLTableName";
if ($mytable == an actual table && $mytable exists && entries can be updated){
UPDATE $mytable;
}
Принимая во внимание, что если имя таблицы (или, в примере JS, имена представлений) НЕ "жестко закодировано", а является пользовательским вводом или иным образом изменяемым, я мог бы исправить свой код, как это показано в примере DashCode.Итак, скажите мне, могут ли эти ценности все равно "пойти не так"?
Спасибо!
Решение
if проверяет эти 3 указателя, чтобы убедиться, что они не равны нулю.Нулевой указатель равен 0, который преобразуется в false .Если какой-либо из этих 3 указателей равен 0 (null), то он не будет пытаться их использовать.
Я не уверен, что делает разыменование нулевого указателя в Javascript, но это ошибка и может вызвать исключение."если" - это просто предотвращение такой возможности.