자바스크립트의 변수는 타입을 지정해주지 않는 방법으로 선언을 하 사용을 합니다.
var키워드를 이용해 타입 지정 없이 선언을 하고 사용합니다.
| 1 2 3
 | var id;  var id = 372;  id = "372"; 
 | 
동시에 여러 변수를 선언할 수 있습니다.
| 1 2 3
 | var idNum, name; idNum = 1; name = "삼치리";
 | 
변수를 선언 할 때 undefined 로 되어 있다가 할당 코드가 나오면 값이 할당 됩니다.
유효 범위(scope)
| 1 2 3 4 5 6
 | var name = "global";     function checkscope(){     var name = "local";      console.log(name);   } checkscope();           
 | 
전역변수(global variable)
전역적으로 정의되어 있는 변수를 말합니다.
var 키워드 없이 변수를 선언하면 자동으로 전역 변수가 됩니다.
| 1 2 3 4 5 6 7 8
 | var name = "global";     function checkscope(){     name = "local";          name2 = "local";     } checkscope(); console.log(name);       console.log(name2);     
 | 
지역변수(local variable)
함수내부에서 선언되며 함수내부에서만 유효합니다.
함수가 실행될 때 함수 내부에 있는 모든 변수는 가장 위로 배치됩니다. 하지만 선언만 유효하고 할당 값은 해당 코드의 위치가 수행될 때 할당 됩니다. 그 이전에는 undefined 입니다.
| 1 2 3 4 5 6
 | var name = "삼치리";  function f() {     console.log(name);      var name = "비밀";      console.log(name);  }
 | 
중첩함수의 유효 범위
중첩 함수에서 내부 함수는 그것이 담긴 함수의 변수에 접근할 수 있습니다.
| 1 2 3 4 5 6 7 8 9 10 11 12
 | function changeName(name){               function inner1(){         name = name + "-inner1";              function inner2(){             name = name + "-inner2";         }         inner2();     }     inner1();     return name; } console.log(changeName("Hello"));   
 | 
블록 유효 범위
블럭 유효범위가 없어서 블럭이 닫힌 후에도 블럭 내부의 변수를 사용할 수 있습니다.
| 1 2 3 4 5 6 7
 | {     var count = 10; } console.log(count);      for (var i=0; i<11; i++){} console.log( i );       
 | 
Java,C 등의 언어와 비교해서 변수의 사용방법과 유효성이 조금 달라서 헷갈리지 않게 잘 익혀둬야할 내용이라고 생각합니다.