Вопрос

быстрый, вероятно, простой вопрос, ответ на который, вероятно, является "наилучшей практикой".

Я следую руководству по веб-приложению 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, но это ошибка и может вызвать исключение."если" - это просто предотвращение такой возможности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top