2015-04-28 3 views
1

У меня вопрос об основах. В JQuery, если я объявляю переменную и присваиваю ей значение внутри функции, как я могу сохранить это изменение? Я думал, что это перепишет его. Пожалуйста помоги.Как объявить и установить переменную в jquery?

Это простой пример того, что я имею в виду. В поле предупреждения отображается 2, но как я могу сохранить 3 в x ??

<script> 
var x=2 
$(document).ready(function(){ 
    (function(){ 
     x=3; 
    }); 
    alert(x); 
}); 
</script> 
+3

Вы никогда не выполняет функцию, которая устанавливает 'x' до 3. –

+0

' window.x = 3; ' будет работать из любой точки мира, например, – dandavis

+1

@ dandavis Globals - это плохая идея в первую очередь. Do * not * присоединяйте свои переменные к объекту 'window', если это абсолютно необходимо. –

ответ

2

Вы написали выражение функции, но это не часть IIFE, поэтому он не получает казнены. Вы должны положить () после выражения функции для его выполнения:

var x = 2; 
 
$(document).ready(function() { 
 
    (function() { 
 
    x = 3; 
 
    })(); 
 
    alert(x); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Этот ответ объясняет это лучше всего. –

1

Функция, которую вы написали, не используется. Попробуйте это вместо

<script> 
    var x=2 
    $(document).ready(function(){ 
     (function(){ 
      x=3; 
     })(); 
     alert(x); 
    }); 
</script> 

Обратите внимание на добавленную скобку, которая вызывает функцию сразу после объявления.

Работающий jsfiddle: http://jsfiddle.net/nayish/x9kzefc2/

В вашем примере, так как х определена вне функции она вводится в функции закрытия и так, если бы вы немедленно, или через некоторое время на запуске функции она будет изменили значение x, которое было определено вне области функций.

Объяснение на функции самостоятельно, ссылающегося:

https://sarfraznawaz.wordpress.com/2012/01/26/javascript-self-invoking-functions/

0

Вы создаете функцию, но не устанавливать и не звонить.

Смотрите здесь, как установить и назвать его:

var x=2 
$(document).ready(function(){ 
    var test = (function(){ 
     x=3; 
    }); 
    test(); 
    alert(x); 
}); 

или

var x=2 
$(document).ready(function(){ 
    (function(){ 
     x=3; 
    })(); 
    alert(x); 
});