📔
web_study
  • JavaScript
  • 엘리_자바스크립트
    • 자바스크립트 기본
      • 클래스 예제와 콜백함수
      • 연산자 boolean
      • 함수 정의, 호출 그리고 콜백
      • 변수타입과 object 차이점
    • JavaScript async 와 await
    • JavaScript Promise
    • 자바스크립트 callback
    • 자바스크립트 json
    • 유용한 10가지 배열 함수들
    • 자바스크립트 배열(array)
    • 자바스크립트 object
    • 자바스크립트 (class vs object) 객체지향 언어
    • 자바스크립트 함수
    • 자바스크립트 연산.반복문
    • 데이터타입, data types, let vs var, hoisting
    • script async 와 defer의 차이점 콘솔 출력
    • 자바스크립트역사
  • 생활코딩
    • 재귀함수
    • 정규 표현식
    • 객체지향
      • 객체지향 프로그래밍
      • 생성자와 new
      • 전역객체
      • this
      • 상속
      • prototype
      • 표준 내장 객체의 확장
      • object
      • 데이터 타입
      • 참조
    • 함수지향
      • 유효범위
      • 값으로서의 함수와 콜백
      • 클로저
      • arguments
      • 함수의 호출
    • UI API, 문서
    • 모듈
    • 객체
    • 배열
    • 함수
    • 반복문
    • 조건문
    • 숫자와문자
    • 변수
    • 비교
  • 노마드 코더
    • Getting the Weather part One Geolocation
    • Image Background
    • TO DO List
    • Saving the User Name
    • Clock part One
    • 조건문 ( if , else, and, or)
    • evnet handlers
    • Function
    • Objects
    • Arrays
    • Variable(변수!)
    • Javascript
  • javascript30
    • Dram Kit
    • clock
    • Css Javascript
    • Array Cardio
    • flex panels
    • type ahead
    • Canvas Draw
    • Speech Synthesis
    • Whack A Mole
  • web standard
    • script 부분
    • form부분
    • 웹접근성
    • <meta>
  • 자바스크립트_이론
    • 기본지식(JAVASCRIPT)
    • 기본지식(CSS)
    • 기본지식(HTML)
    • 기본지식(HTTP)
    • Dom
    • 라이브러리, 프레임워크, 플로그인
Powered by GitBook
On this page
  • 유효범위
  • 전역변수
  • 지역변수
  • 전역변수의 사용
  • 전역변수를 사용하고 싶지 않다면 -> 익명함수를 호출
  • 유효범위의 대상 (함수)
  • 정적 유효범위

Was this helpful?

  1. 생활코딩
  2. 함수지향

유효범위

유효범위

유효범위(Scope)는 변수의 수명을 의미

var vscope = 'global'; //global 이라는 값을 할당 전역변수 
function fscope(){
    var vscope = 'local' ; // 지역변수
    alert(vscope);
}
fscope(); // local이 출력됨 
var vscope = 'global';
function fscope(){
    var vscope = 'local';
    var lv = 'local variables';
    alert(lv); //지역변수 이기때문에 지역에서만 접근이 가능한다. 
}
fscope();
alert(lv); //undefined
var vscope = 'global';
function fscope(){
    var vscope = 'local';
}
fscope();
alert(vscope);  // global

  • 함수내에 var을 쓰게되면 지역변수가 되기때문에 ​ 👉 global 로 출력이됨

전역변수

함수 외부에서 선언된 변수, 👉프로그램 전체에서 접근할 수 있는 변수

지역변수

함수 내부에서 선언된 변수로, 함수가 실행되면 만들어지고 함수가 종료되면 소멸하는 변수 👉 함수 외부에서는 접근할 수 없

전역변수의 사용

MYAPP = {} // 전역변
MYAPP.calculator = {
    'left' : null,
    'right' : null
    // 전역변수 소속 객체 
}
MYAPP.coordinate = {
    'left' : null,
    'right' : null
    // 전역변수 소속 객체 
}
 
MYAPP.calculator.left = 10;
MYAPP.calculator.right = 20;
function sum(){
    return MYAPP.calculator.left + MYAPP.calculator.right;
}
document.write(sum()); //30

불가피하게 전역변수를 사용해야 하는 경우는 하나의 객체를 전역변수로 만들고 객체의 속성으로 변수를 관리하는 방법을 사용

전역변수를 사용하고 싶지 않다면 -> 익명함수를 호출

(function(){ 
    // 함수의 지역변수
    var MYAPP = {}
    MYAPP.calculator = {
        'left' : null,
        'right' : null
    }
    MYAPP.coordinate = {
        'left' : null,
        'right' : null
    }
    MYAPP.calculator.left = 10;
    MYAPP.calculator.right = 20;
    function sum(){
        return MYAPP.calculator.left + MYAPP.calculator.right;
    }
    document.write(sum());
}())

유효범위의 대상 (함수)

for(var i = 0; i < 1; i++){
    var name = 'coding everybody';
    // for문 if문 안에서 선언된 변수는 지역변수로서의 의미를 갖지 않는다. 
}
alert(name);

정적 유효범위

자바스크립트는 함수가 선언된 시점에서의 유효범위를 갖는다. 이러한 유효범위의 방식을 정적 유효범위(static scoping), 혹은 렉시컬(lexical scoping)이라고 한다.

var i = 5;
 
function a(){
    var i = 10;
    b();
}
 
function b(){
    document.write(i); 
    // 지역변수가 존재하지 않을때 전역변수를 찾게됨 
    // i -> 5 
}
 
a();
Previous함수지향Next값으로서의 함수와 콜백

Last updated 3 years ago

Was this helpful?

var 을 사용하지않고 vscope = 'local' 을 쓴다면 전역변수의 값이 변하기 때문에 local이 출력된다.

자바스크립트는 함수에 대한 유효범위만을 제공한다. 많은 언어들이 블록(대체로 {,})에 대한 유효범위를 제공하는 것과 다른 점이다.

사용될때가 아니고 메소드가 정의될때 전역변수가 사용되게 된다.

👉
🌟
🌟