ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스코프
    Js 2023. 3. 6. 22:06

    스코프 (Scope)

    • 유효 범위
    • 동일한 식별자 충돌 방지
    • 변수나 함수 선언 위치에 따라 스코프 지님
    var str = “더하기”;
    
    function sum(num1, num2){
    	str = “sum 함수 스코프”;
    	return num1 + num2;
    }
    
    sum(10, 20);
    console.log(str);

    = str함수 출력 x sum 함수 출력 o

    함수 레벨 스코프 (function-level scope)

    • 함수 안에 선언한 변수 => 지역 변수
    • 함수 외부에서 해당 변수 호출 시 오류
    var str = "전역 스코프";
    
    function fnScopeTest(){
        var str = "지역 스코프";
    
        console.log(str);
    }
    
    fnScopeTest(); // 지역 스코프
    console.log(str) // 전역 스코프
        let str = "전역 스코프";
    
    	function fnScopeTest(){
    		let str = "지역 스코프";
    
    		console.log(str);
    	}
    
    	fnScopeTest(); // 지역스코프
        console.log(str); // 전역스코프
       conet str = "전역 스코프";
    
    	function fnScopeTest(){
    		conet str = "지역 스코프";
    
    		console.log(str);
    	}
    
    	fnScopeTest(); // 지역스코프
        console.log(str); // 전역스코프

    블록 레벨 스코프 (block-level scope)

    • 블록 내에서 접근 가능한 스코프
    • { … }
    {
        var str = "지역 스코프";
    }
    console.log(str); // 지역스코프

    =var는 블록레벨 스코프가 아님

    {
        let str = "지역 스코프";
    }
    console.log(str); // ReferenceError
    {
        let str = "지역 스코프";
        console.log(str); // 지역 스코프
    }

    =let 블록레벨 스코프를 가진다 + const와 동일

    	var str = "전역 스코프";
        
    	function scopeTest() {
    		var str = "지역 스코프";		//재선언 및 재할당
    		var str2 = "지역 스코프2";
    		console.log(str); 
    		console.lod(str2)
    	}
    	
        
        console.log(str); // 전역 스코프
    	var str = "스코프";
            function scopeTest() {
            var str = "지역 스코프";		//재선언 및 재할당
            var str2 = "지역 스코프2";
            console.log(str); 
            console.lod(str2);
        }
    	
        
        console.log(str); // 전역 스코프
    	
        function scopeTest2() {
        	console.log(str2); // str2 is no defined
        }
    
    	scopTest();
    	scopeTest2();

    var

    	let str = "스코프";
            function scopeTest() {
            let str = "지역 스코프";		//재선언 및 재할당
            let str2 = "지역 스코프2";
            console.log(str); 
            console.lod(str2);
        }
    	
        
        console.log(str); // 전역 스코프
    	
        function scopeTest2() {
        	console.log(str2); // str2 is no defined
        }
    
    	scopTest();
    	scopeTest2();

     

    전역스코프와 지역스코프

    	var globalScope = "전역 스코프";
    
    	function scopeTest() {
    		var localScope = "지역 스코프";
    
    		document.write("scopeTest 함수 내 globalScope ::: "+globalScope+"<br>");
    		document.write("scopeTest 함수 내 localScope ::: "+localScope+"<br>");
    	}
    
    	scopeTest();
        
        //scopeTest 함수 내 globalScope ::: 전역스코프);
        //scopeTest 함수 내 localScope ::: 지역스코프);
    	var globalScope = "전역 스코프";
    
    	function scopeTest() {
    		var localScope = "지역 스코프";
    
    	}
    	scopeTest();
        
        document.write("scopeTest 함수 밖 globalScope ::: "+globalScope+"<br>");
        document.write("scopeTest 함수 밖 localScope ::: "+localScope+"<br>");
            
        //scopeTest 함수 밖 globalScope ::: 전역스코프);
        // ReferenceError ; => 지역스코프의 유효한 범위는 지역 내에서만 유효함

    var

    	let globalScope = "전역 스코프";
    
    	function scopeTest() {
    		let localScope = "지역 스코프";
    
    		document.write("scopeTest 함수 내 globalScope ::: "+globalScope+"<br>");
    		document.write("scopeTest 함수 내 localScope ::: "+localScope+"<br>");
    	}
    
    	//scopeTest();
        const globalScope = "전역 스코프2";
        document.write("scopeTest 함수 밖 globalScope ::: "+globalScope+"<br>");
        // = SyntaxError let과 const는 재 선언이 불가능 하기 때문

    'Js' 카테고리의 다른 글

    IIFE  (0) 2023.03.06
    호이스팅  (0) 2023.03.06
    DOM  (0) 2023.03.06
    배열  (0) 2023.03.03
    비트 연산자  (0) 2023.03.02

    댓글

Designed by Tistory.