본문 바로가기
지속가능티끌/JavaScript

JavaScript. 변수 (Variable). 전역,지역

by i.got.it 2016. 7. 27.


변수(JavaScript)

 

JavaScript에서 변수에 "hello" 또는 5와 같은 값이 포함됩니다. 변수를 사용할 때 변수가 나타내는 데이터를 참조합니다(예: NumberOfDaysLeft = EndDate – TodaysDate).

코드에 표시되는 값을 저장, 검색 및 조작하는 데 변수를 사용합니다. 다른 사용자가 코드가 수행하는 작업을 쉽게 이해할 수 있도록 변수에 의미를 알 수 있는 이름을 지정합니다.


선언은 스크립트에 변수가 처음 표시되는 경우입니다. 변수를 처음 언급하면 메모리에 변수가 설정되어 나중에 스크립트에서 참조할 수 있습니다. 변수는 항상 선언한 후 사용해야 합니다. var 키워드를 사용하여 이 작업을 수행합니다.

JavaScript
// A single declaration.
var count;  
// Multiple declarations with a single var keyword.
var count, amount, level;    
// Variable declaration and initialization in one statement.
var count = 0, amount = 100; 

var 문에서 변수를 초기화하지 않으면 변수가 undefined 값으로 할당.     


JavaScript는 대/소문자를 구분하는 언어입니다. 즉, myCounter와 같은 변수 이름은 변수 이름 MYCounter와 다릅니다. 변수 이름의 길이는 임의로 지정할 수 있습니다. 올바른 변수 이름을 만드는 규칙은 다음과 같습니다.

  • 첫 번째 문자는 ASCII 문자(대문자 또는 소문자)이거나 밑줄(_) 문자여야 합니다. 첫 번째 문자에는 숫자를 사용할 수 없습니다.

  • 그 다음 문자는 문자, 숫자 또는 밑줄(_)이어야 합니다.

  • 예약어는 변수 이름으로 사용할 수 없습니다.

다음은 올바른 변수 이름의 예입니다.

_pagecount 
Part9 
Number_Items 

다음은 잘못된 변수 이름의 예입니다.

JavaScript
// Cannot begin with a number. 
99Balloons   
// The ampersand (&) character is not a valid character for variable names. 
Alpha&Beta 

변수를 선언하고 초기화하지만 특정 값을 지정하지 않으려는 경우 변수에 null 값을 할당합니다. 예를 들면 다음과 같습니다.

JavaScript
var bestAge = null;
var muchTooOld = 3 * bestAge; // muchTooOld has the value 0.

값을 할당하지 않고 변수를 선언하면 변수가 undefined 값을 갖게 됩니다. 예를 들면 다음과 같습니다.

JavaScript
var currentCount;
// finalCount has the value NaN because currentCount is undefined.
var finalCount = 1 * currentCount; 

null 값은 숫자 0과 같이 동작하며 undefined는 특수 값 NaN(숫자가 아님)처럼 동작합니다. null 값을 undefined 값과 비교하는 경우 두 값은 동일합니다.

선언에 var 키워드를 사용하지 않고 변수를 선언한 다음 변수에 값을 할당할 수 있습니다. 이는 암시적 선언입니다.

JavaScript
// The variable noStringAtAll is declared implicitly.
noStringAtAll = ""; 

선언하지 않은 변수는 사용할 수 없습니다.

JavaScript
// Error. Length and width do not yet exist.
var area = length * width; 


JavaScript는 자유로운 형식의 언어로 엄격한 형식의 언어인 C++과 반대됩니다. 즉, JavaScript 변수에는 미리 정의된 형식이 없습니다. 대신, 변수 형식은 값의 형식입니다. 이 동작을 통해 값을 다른 형식인 것처럼 처리할 수 있습니다.

JavaScript에서는 예외를 발생시키지 않고 서로 다른 형식의 값에 대한 작업을 수행할 수 있습니다. JavaScript 해석기는 한 데이터 형식에서 다른 데이터 형식으로 암묵적으로 변환하거나 강제 변환한 후 연산을 수행합니다. 문자열, 숫자 및 부울 값을 강제 변환하는 규칙은 다음과 같습니다.

  • 숫자 및 문자열을 추가하면 숫자가 문자열로 강제 변환됩니다.

  • 부울 및 문자열을 추가하면 부울이 문자열로 강제 변환됩니다.

  • 숫자 및 부울을 추가하면 부울이 숫자로 강제 변환됩니다.

다음 예에서는 문자열에 추가된 숫자가 문자열이 됩니다.

JavaScript
var x = 2000;
var y = "Hello";
// The number is coerced to a string.
x = x + y;
document.write(x); 

// Output:
// 2000Hello

문자열은 비교를 위해 해당 숫자로 자동으로 변환됩니다. 문자열을 정수로 명시적으로 변환하려면 parseInt 함수를 사용합니다. 문자열을 숫자로 명시적으로 변환하려면 parseFloat 함수를 사용합니다.



from MSDN : https://msdn.microsoft.com/ko-kr/library/67defydd(v=vs.94).aspx




변수 범위(JavaScript)

 

JavaScript에는 전역 및 지역의 두 가지 범위가 있습니다.  함수 정의의 외부에 선언된 변수는 전역 변수이며 프로그램 전체에서 이 값에 액세스하여 수정할 수 있습니다.  함수 정의의 내부에 선언된 변수는 지역 변수입니다.  이 변수는 함수가 실행될 때마다 만들어지고 소멸되므로 함수 외부의 코드에서 액세스할 수 없습니다.  블록 범위 변수의 특별한 경우를 제외하고는 JavaScript는 블록 범위를 지원하지 않습니다(중괄호 집합 {. . .}에서 새 범위를 정의).  

지역 변수는 전역 변수와 동일한 이름을 가질 수 있지만 전역 변수와 완전히 별개의 것입니다. 따라서 한 변수의 값을 변경해도 동일한 이름의 다른 변수에 영향을 미치지 않으며  로컬 버전은 로컬 버전이 선언된 함수 내부에서만 의미가 있습니다.  

JavaScript
// Global definition of aCentaur.
var aCentaur = "a horse with rider,";

// A local aCentaur variable is declared in this function.
function antiquities(){

   var aCentaur = "A centaur is probably a mounted Scythian warrior";
}

antiquities();
aCentaur += " as seen from a distance by a naive innocent.";

document.write(aCentaur);

// Output: "a horse with rider, as seen from a distance by a naive innocent."

JavaScript에서 변수는 속해 있는 범위의 처음에 선언된 것처럼 계산됩니다.  이 때문에 다음과 같이 예상치 않은 동작이 나타날 수 있습니다.  

JavaScript
var aNumber = 100;
tweak();

function tweak(){

    // This prints "undefined", because aNumber is also defined locally below.
    document.write(aNumber);

    if (false)
    {
        var aNumber = 123;  
    }
}

JavaScript에서는 함수를 실행할 때 모든 변수 선언(예: var someVariable;)을 먼저 찾아보고   undefined의 초기 값으로 변수를 만듭니다.  변수가 값을 사용하여 선언되면(예: var someVariable = "something";) 처음에는 undefined 값을 갖고 있다가 선언을 포함하는 줄이 실행될 때만 선언된 값을 취합니다.  

JavaScript에서는 코드를 실행하기 전에 조건부 블록 내에 있든 다른 구문 내에 있든 관계없이 모든 변수 선언을 처리합니다.  JavaScript에서 모든 변수를 찾았으면 함수 내의 코드를 실행합니다.  변수가 함수 내에 암시적으로 선언된 경우, 즉 할당 식의 왼쪽에 표시되지만 var을 사용하여 선언되지 않은 경우 전역 변수로 만들어집니다.  

JavaScript에서 내부(중첩된) 함수는 반환된 후에도 함수 자체와 같은 범위에 있는 지역 변수에 참조를 저장합니다.  이 참조 집합을 클로저라고 합니다.  외부 함수에 대한 입력 매개 변수(name)는 내부 함수에 대한 클로저에 저장되는 지역 변수이므로 다음 예제에서 내부 함수에 대한 두 번째 호출은 첫 번째 호출과 같은 메시지("Hello Bill")를 출력합니다.  

JavaScript
function send(name) {
    // Local variable 'name' is stored in the closure
    // for the inner function.
    return function () {
        sendHi(name);
    }
}

function sendHi(msg) {
    console.log('Hello ' + msg);
}

var func = send('Bill');
func();
// Output:
// Hello Bill
sendHi('Pete');
// Output:
// Hello Pete
func();
// Output:
// Hello Bill

Internet Explorer 11은 블록 범위 변수인 letconst에 대한 지원을 제공합니다.  이러한 변수에 대해 중괄호 {. . .}로 새 범위를 정의합니다.  이러한 변수 중 하나를 특정 값으로 설정하면 해당 값은 설정된 범위에만 적용됩니다.  

다음 예제에서는 let 및 블록 범위 지정을 사용하는 방법을 보여 줍니다.

System_CAPS_note참고

다음 코드는 Internet Explorer 11 표준 모드 이상에서 지원됩니다.

JavaScript
let x = 10;
var y = 10;
{
    let x = 5;
    var y = 5;
    {
        let x = 2;
        var y = 2;
        document.write("x: " + x + "<br/>");
        document.write("y: " + y + "<br/>");
        // Output:
        // x: 2
        // y: 2
    }
    document.write("x: " + x + "<br/>");
    document.write("y: " + y + "<br/>");
    // Output:
    // x: 5
    // y: 2
}

document.write("x: " + x + "<br/>");
document.write("y: " + y + "<br/>");
// Output:
// x: 10
// y: 2



///846.

댓글



 

비트코인




암호화폐       외환/나스닥/골드       암호화폐/외환/나스닥/골드 암호화폐/외환/나스닥/골드   암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)     롤오버 이자 없는 스왑프리계좌
( 스왑프리 암호화폐도 거래 가능 )    
MT4, MT5 , cTrader 모두 지원     FTMO 계좌 매매운용. MT4,MT5