Programing

JavaScript에서 전역 변수를 선언하는 방법은 무엇입니까?

lottogame 2020. 6. 26. 08:10
반응형

JavaScript에서 전역 변수를 선언하는 방법은 무엇입니까?


JavaScript에서 전역 변수를 어떻게 선언 할 수 있습니까?


프로덕션 코드에서 전역 변수를 생성해야하는 경우 (피해야 함) 항상 명시 적으로 선언하십시오 .

window.globalVar = "This is global!";

var동일한 이름의 로컬 변수가 없다고 가정 하여 전역 변수를 정의하는 것이 가능하지만 암시 적 전역을 생성 하는데, 이는 나쁜 일이며 엄격 모드 에서 오류를 생성 합니다 .


이것이이 변수를 사용하는 유일한 응용 프로그램이라면 Felix의 접근 방식이 우수합니다. 그러나 jQuery 플러그인을 작성하는 경우 jQuery 객체에 필요한 "namespacing"(따옴표에 대한 자세한 내용 ...) 변수 및 함수를 고려하십시오. 예를 들어, 현재 miniMenu라는 jQuery 팝업 메뉴를 만들고 있습니다. 따라서 miniMenujQuery에서 "네임 스페이스"를 정의하고 모든 것을 배치했습니다.

Javascript 네임 스페이스에 대해 이야기 할 때 따옴표를 사용하는 이유는 일반적인 의미에서 실제로 네임 스페이스가 아니기 때문입니다. 대신 자바 스크립트 객체를 사용하고 모든 함수와 변수를이 객체의 속성으로 배치합니다.

또한 편의상 플러그인 i내부에서만 사용해야 하는 플러그인의 네임 스페이스로 플러그인 네임 스페이스를 하위 공간으로 지정하여 플러그인 사용자에게 숨길 수 있습니다.

이것이 작동하는 방식입니다.

// An object to define utility functions and global variables on:
$.miniMenu = new Object(); 
// An object to define internal stuff for the plugin:
$.miniMenu.i = new Object();

이제 할 수 $.miniMenu.i.globalVar = 3있거나 $.miniMenu.i.parseSomeStuff = function(...) {...}전 세계적으로 무언가를 저장해야 할 때마다 여전히 전역 네임 스페이스에 보관하지 않습니다.


편집 질문은 JavaScript에 관한 것이고, 대답은 jQuery에 관한 것입니다. 이것은 jQuery가 널리 퍼진 시대의 오래된 답변입니다.

대신 JavaScript의 이해 범위폐쇄권장합니다.

오래되고 나쁜 대답 : jQuery를 사용하면 선언 위치에 관계 없이이 작업을 수행 할 수 있습니다.

$my_global_var = 'my value';

그리고 어디서나 사용할 수 있습니다. 이미지가 다른 곳에 퍼져있을 때 빠른 이미지 갤러리를 만드는 데 사용합니다.

$gallery = $('img');
$current = 0;

$gallery.each(function(i,v){
    // preload images
    (new Image()).src = v;
});
$('div').eq(0).append('<a style="display:inline-block" class="prev">prev</a> <div id="gallery"></div> <a style="display:inline-block" class="next">next</a>');
$('.next').click(function(){
    $current = ( $current == $gallery.length - 1 ) ? 0 : $current + 1;
    $('#gallery').hide().html($gallery[$current]).fadeIn();
});
$('.prev').click(function(){
    $current = ( $current == 0 ) ? $gallery.length - 1 : $current - 1;
    $('#gallery').hide().html($gallery[$current]).fadeIn();
});

:이 페이지의 콘솔 에서이 전체 코드를 실행하십시오. ;-)


다음은 나머지 함수가 액세스 할 수있는 전역 변수의 기본 예입니다. 다음은 실제 예입니다. http://jsfiddle.net/fxCE9/

var myVariable = 'Hello';
alert('value: ' + myVariable);
myFunction1();
alert('value: ' + myVariable);
myFunction2();
alert('value: ' + myVariable);


function myFunction1() {
    myVariable = 'Hello 1';
}

function myFunction2() {
    myVariable = 'Hello 2';
}

jquery ready () 함수 내 에서이 작업을 수행하는 경우 변수가 다른 함수와 함께 ready () 함수 안에 있는지 확인하십시오.


함수 외부에서 변수 선언

function dosomething(){
  var i = 0; // can only be used inside function
}

var i = '';
function dosomething(){
  i = 0; // can be used inside and outside the function
}

가장 좋은 방법은을 사용 closures하는 것입니다. window객체는 속성으로 인해 매우 복잡해 지기 때문 입니다.

HTML

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript" src="init.js"></script>
    <script type="text/javascript">
      MYLIBRARY.init(["firstValue", 2, "thirdValue"]);
    </script>
    <script src="script.js"></script>
  </head>

  <body>
    <h1>Hello !</h1>
  </body>    
</html>

init.js ( 이 답변을 기반으로 함 )

var MYLIBRARY = MYLIBRARY || (function(){
    var _args = {}; // private

    return {
        init : function(Args) {
            _args = Args;
            // some other initialising
        },
        helloWorld : function(i) {
            return _args[i];
        }
    };
}());

script.js

// Here you can use the values defined in the html as if it were a global variable
var a = "Hello World " + MYLIBRARY.helloWorld(2);

alert(a);

Here's the plnkr. Hope it help !

참고URL : https://stackoverflow.com/questions/3352020/how-to-declare-a-global-variable-in-javascript

반응형