2016-03-31 19 views
1

Я изучаю вещи с нуля и пытаюсь понять, как лучше получать значения из функций. Рассмотрим следующие примеры.Возвращаемое значение от имени функции

/* Screen Orientation Check */ 
function screenOrientation() { 
    var screenOrientationCheck = ($(window).width() > $(window).height())? 90 : 0; 
    console.log(screenOrientationCheck) ; 
} 
screenOrientation(); 

Выше дает мне ориентацию экрана.

/* Viewport Height Check */ 
function viewportHeight() { 
    var viewportHeightCheck = document.documentElement.clientHeight 
    console.log('viewportHeight = '+viewportHeightCheck); 
}; 
viewportHeight(); 

Это даст мне высоту видового экрана.

Но теперь, если мне нравится работать с результатами этих функций, я не уверен, как это сделать.

if (viewportHeight() > 600) { 
    console.log('Hooray!!'); 
}; 

Например, это никогда не срабатывает.

if (screenOrientation() === 90) { 
    console.log('Hooray!!'); 
}; 

Аналогичным образом это также никогда не срабатывает.

Если мне нравится регистрироваться screenOrientationCheck или viewportHeightCheck, это undefined, потому что переменные существуют только в пределах функции. Это я понял. Добавление return к таким функциям, как показано ниже, также не делает трюк.

/* Viewport Height Check */ 
function viewportHeight() { 
    var viewportHeightCheck = document.documentElement.clientHeight 
    console.log('viewportHeight = '+viewportHeightCheck); 
    return viewportHeightCheck; 
}; 

Я знаю, что это основной материал. Поэтому я сожалею, что потратил ваше драгоценное время на это.

Я пытаюсь понять, как я могу работать со значениями, созданными в функциях, и вызывать их снова и снова в коде вместо анонимных функций, выполняемых в ходе и только один раз.

Если у кого-то есть нервы, ответьте на это как можно подробнее, возможно, с примером, который в конце концов будет записывать Hooray!!, и это будет хороший конец.

ответ

5

Необходимо вернуть значение. Вот рабочий Jsfiddle

function getViewportHeight() { 
    var viewportHeightCheck = document.documentElement.clientHeight 
    return viewportHeightCheck; 
}; 

if (getViewportHeight() > 600) { 
    console.log('Hooray!!'); 
}; 
+1

вопрос, чтобы спросить, как это отличается от ФОС последний пример, который, по-видимому, не работает? – Andy

+0

Я выбрал это как ответ, потому что он использует переменную для значения 'return', как указано в моем вопросе. Хотя это также помогло мне показать, что @ [juliobetta] (https://stackoverflow.com/users/561610/juliobetta) отвечает с инструкцией функции за 'return'. У меня есть тот же самый код, так что кеш браузера не был полностью опустошен или страница перезагружена, или окно браузера слишком мало для пикселей, которые у меня были. После отправки вопроса я ушел на пару часов, перезагрузил страницу по возвращении (каламбур), и все было в порядке. Хотя это здорово, чтобы это подтвердилось. – lowtechsun

1

В вашем конкретном случае, эти функции должны возвращать значение, поэтому каждый раз, когда они называются, вы получите значение в соответствии с размерами страницы.

/* Screen Orientation Check */ 
 
function screenOrientation() { 
 
    return ($(window).width() > $(window).height())? 90 : 0; 
 
} 
 

 

 
/* Viewport Height Check */ 
 
function viewportHeight() { 
 
    return document.documentElement.clientHeight 
 
}; 
 

 

 
$('#action').on('click', function() { 
 
    $('#info').html('Screen Orientation: ' + screenOrientation() + '<br>' + 
 
        'Viewport Height: ' + viewportHeight()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="info"></div> 
 

 
<p> 
 
    <button id="action">Get Values</button> 
 
</p>

+1

Отлично работает, спасибо. – lowtechsun

Смежные вопросы