2017-01-08 3 views
-1

У меня есть функция для вычисления ширины экранаКак получить доступ к переменной внутри другой функции

var screenWidth = jQuery(window).width(); 

function checkScreenSize() 
{ 
    screenWidth = jQuery(window).width(); 
} 

jQuery(window).on("resize", checkScreenSize).resize(); 

Как я могу использовать этот screenWidth внутри другой функции?

EDIT:

Я хочу, чтобы получить доступ к этой переменной здесь, например:

function showContent() { 
    if(screenWidth <= 1000) 
    { 
     console.log(screenWidth); 
    } 
} 
+1

где вы пытались получить к нему доступ, и его недоступно? – Deep

+0

Я думаю, что @Deep хотел знать, где вы определяете эту функцию там, где вы ее называете. Если он вызывается до завершения метода checkScreenSize, переменная не была установлена ​​с использованием значения width. Вы называете это каждый раз, когда происходит изменение размера? Как синхронизировать два метода? Если 'schowContent' определен за пределами области, где определена переменная' var screenWith' (которая не является «глобальной» переменной, вы могли бы определить ее в другом теле функции или в модуле requirejs), то «screenWith» 'будет неизвестно методу showContent'. –

ответ

1

Поскольку screenWidth является глобальной переменной, объявленной вне function вы упомянули, вы можете получить доступ к нему как это это:

function foo() { 
    console.log(screenWidth); 
} 
+0

Я должен был сказать, что мне нужна ширина экрана для обновления, когда размер окна также равен –

+0

@KeithDonegan. Ваша глобальная переменная доступна из любого места. Если вам нужно обновить его для разных действий, вам необходимо добавить обработчики для этой цели. У вас уже есть обработчик изменения размера. Как это не работает и чего вы хотите добиться вместо этого? –

0

Ваш глобальный screenWidth является довольно уселенным s ...

, если вам нужно знать ширину внутри обратного вызова обработчика изменения размеров, что то, где вам нужно позвонить jQuery(window).width()

function checkScreenSize(){ 
 
    var w = $(window).width() 
 
    console.log(w) 
 
} 
 

 
jQuery(window).on("resize", checkScreenSize) 
 

 
// .resize() is a shorthand for .on('resize' method
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0


, когда вы определили переменную из функции, это будет глобальная переменная, и вы можете использовать ее в другой функции!
У вас есть проблема с этим?


вы также можете посетить: http://www.w3schools.com/js/js_scope.asp

0

Вы можете достичь этого путем определения указанной переменной в global сферы; если этот var screenWidth = ... определен внутри какого-либо другого контекста функции, у вас не будет доступа к нему из других функций.

Использование globals - плохая идея; однако во многих случаях вам нужно какое-то переменное значение, к которому вам нужен доступ из других мест. В этом случае можно построить хорошо определенный контейнер «Globals», как именно:

'use strict';  // strict mode :: prevents nasty bugs 
this.Main = this; // super-global :: refers `window` -or- `global` 

Main.Globals = {screenWidth:null}; 

// your dynamic screen resizing code here sets the `Globals.screenWidth` 
// now you have access to this anywhere 

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

+0

Если вам нужен более сложный ответ, который включает динамическую настройку значений при событии изменения размера окна; или даже если я должен добавить код ограничений на запись - просто добавьте комментарий здесь, и я добавлю его;) – argon

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