Перевод кода Dashcode - PullRequest
       17

Перевод кода Dashcode

1 голос
/ 17 февраля 2010

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

Я следую учебному пособию для мобильного веб-приложения 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 методу объекта? Почему это важно?

РЕДАКТИРОВАТЬ - Это был / был основной вопрос этого вопроса, и он касается не 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. Так скажите мне, могут ли эти значения "пойти не так" в любом случае?

Спасибо!

1 Ответ

1 голос
/ 19 февраля 2010

If проверяет эти 3 указателя, чтобы убедиться, что они не равны NULL. Нулевой указатель равен 0, что преобразуется в ложь. Если любой из этих 3 указателей равен 0 (пусто), он не будет пытаться использовать их.

Я не уверен, что делает разыменование нулевого указателя в Javascript, но это ошибка и может вызвать исключение. If просто избегает такой возможности.

...