본문 바로가기

나의 FE피봇이야기/Javascript

[Javascript] 변수선언, 함수, 생성자, 매서드 등 확인하는 방법

함수 작동 원리

 

hosting

environmentRecord는 현재 실행될 컨텍스트의 대상 코드 내에 어떤 식별자들이 있는지에만 관심이 있고, 각 식별자에 어떤 값이 할당될 것인지 관심없음.

(단 변수는 선언부와 할당부에서 선언부만 반면, 함수 선언은 함수 전체를)

1. 변수망 끌어올려 주솟값 배정(할당)

2. 할당 처리 X

 

 

함수 선언문은 함수명으로 선언한 변수에 함수를 할당

명칭
예시
변수 (var / let / const) aaa  
string, value "aaa"
함수 aaa( )
  method(메소드) _____.write( )
(거의)객체 :생성자 함수
Aaa( )
 property(속성) _____.scr =

 

 

 _____.scr =  : property(속성)

 _____.write( ) : method(메소드)

명령어 : ( ) 생겨라 '열려라 참깨!'

 

 

함수 선언문(function declaration)과 함수 표현식(function expression)

함수 선언 : function의 정의부분만 존재하고 별도의 할당 명령이 없는 것.

함수 표현 : 정의한 function을 별도의 변수에 할당하는 것(함수 선언문의 경우 만드시 항수명이 정의돼있어야. 반면 함수 표현식은 없어도.).

      익명 함수 표현식 : 함수명을 정의하지 않은 함수.

function a ( ) { }
a( );
>>>함수 선언문. 함수명 a가 곧 변수명.

var c = function d( ){ }
c( ); => 실행 가능
>>> 익명 함수 표현식. 변수명 b가 곧 함수명.

     

        기명 함수 표현식 : 함수명을 정의한 함수.

var c = function d ( ){ }
c( ); => 실행 가능
d( ); => 에러!
>>> 기명 함수 표현식. 변수명은 c, 함수명은 d

 

 

 

 

 

object.property " = "  속성이 된다는 뜻은 object의 key값을 의미함으로 "=" 은 object 안에 속성(key)의 값(value)를 변경한다는 이야기
object.method " ( )"

 

  • 변수 앞에 점(.) 불가 : (var/let/const) aaa => 변수
  • aaa( ) => 함수
  • ____.aaa() => ( )는 값을 return(반환) 한다는 것과 동의어(주의 해야할 점은 return은 parameter를 받은 경우에만 지역변수 값을 전역변수로 반환한다[확인필요.2023.11.17]. 따라서 전역벽수로 값을 반환하고 싶을 경우는 function() 작성 이전에 (var / let / const) aaa  =""; 선언 필요)

 

class 공식에서 return 값을 사용하는데, 여기서는 가로안 parameter(인자)가 없다.

class School { 
  constructor(school) {
    this.SchoolName = school;
  }
  mySchool( ){
    return "My School is "+ this.schoolName;
  }
}

 

 

 

 

  <script>
    function testFunction() {
      alert('실행하소서');
    };



     let i = testFunction();

 

     //실행할 함수가 하나여서 function's Name 삭제 가능
     let i = function() {

 

       alert('실행해주소서.');
       }

 

     //'function' 삭제 + '=>'추가  >>> 변수 'i'통해서 콜 가능하니까.
     let i = () => {
        alert('실행해주소서.');
      }

 

 

객체

TIP
객체를 만들때 function's Name은 첫문자는 대문자
function Student(v1, v2){
  (key) this.vv1 = v1(value)
  (key) this.vv2 = v2(value) ;
}

===  Student = {vv1 : v1, vv2 : v2}

 

객체 안 function

function  person : { name : "최영희", age : 22, fullName : function() { ... }}

- person.name => 최영희

- person.age => 22

- person.fullName => function() { ... } (함수가 계산식이 출력)

- person.fullName( ) => 함수 결과 값이 출력 +function () { 안에 return 값 필요*}

예시 )

this.age = function ( ) {

let date = new Date;

return date.getFullyear - this.birth_year;

}

 

 

 

 

----TIP----

function abc( ) { }
setTimeout ("abc( )", 2000} === setTimeout(abc, 2000)

 

 

TIP
obj.
obj.write ( param )
==> 명령어 
함수는 앞에 '동사' 명령어

 

참조

코어 자바스크립트