>
이 코드는 출력을 0으로 기록합니다. 출력은 6이어야합니다.

function sum(a,b){
  r=a+b;
  return r; 
}
r=sum(2,9);
r1=sum(1,4);
diff=r-r1;
console.log(diff);


  • 답변 # 1

    var 를 사용해야합니다   r 를 선언하면 키워드  기능 내에 로컬 변수가 없으면범위 충돌r 가 발생합니다  함수 내부는 전역 적으로 선언되고 r 와 동일한 변수로 간주됩니다.  함수 외부의 변수 :

    function sum(a,b){
        var r=a+b;
        return r; 
    }
    
    

    이것이 도움이되기를 바랍니다.

    function sum(a,b){
        var r=a+b;
        return r; 
    }
    r=sum(2,9);
    r1=sum(1,4);
    diff=r-r1;
    console.log(diff);
    
    

  • 답변 # 2

    var 를 사용해야합니다  변수를 선언 할 때. var 를 사용하지 않음  암시 적으로 전역 변수를 작성 중입니다.

    function sum(a,b){
        r=a+b; // This ends up being a reference to the same `r` as below
        return r; 
    }
    r=sum(2,9); // This creates a global variable called r and sets it to 11
    r1=sum(1,4); // This sets global `r` to 5 (because of the r=a+b in sum()
    diff=r-r1; // 5 - 5 is 0
    console.log(diff);
    
    

    대신 대신 :

    function sum(a,b){
        var r=a+b; // Now this r is local to the sum() function
        return r; 
    }
    var r=sum(2,9); // Now this r is local to whatever scope you are in
    var r1=sum(1,4);
    var diff=r-r1;
    console.log(diff);
    
    

  • 답변 # 3

    r   sum 의 내부와 외부에 언급 . 그런 다음 로컬 변수는 아니지만 함수 외부에 존재합니다. sum 에 전화   r 의 이전 값을 덮어 씁니다. .

    r1=sum(1,4);  특히 r 를 설정합니다  그리고 r1   5 로 그래서 diff  그러면 0 가 될 것입니다

  • 답변 # 4

    이것은

    내부에 변수 r을 선언하지 않았기 때문입니다.

    var 키워드를 사용한 함수입니다. 전역 범위에 있습니다.

    이 r1 = sum (1,4)를 수행하면 r의 값이 다음으로 재정의됩니다.

    5이고 r1의 값도 5입니다. 따라서 r-r1의 차이는

    0이됩니다.

    이를 피하기 위해 var 키워드를 사용하여 함수 내부에 r을 선언 할 수 있습니다.

    function sum(a,b){
        var r=a+b;
        return r; 
    }
    r=sum(2,9);
    r1=sum(1,4);
    diff=r-r1;
    console.log(diff);
    
    

    이것이 도움이 될 것입니다.

  • 이전 javascript - jQuery JSON으로 n 번째 반복마다 새로운 테이블 행 생성
  • 다음 opengl - 액티브 셰이더 프로그램을 VAO에 저장할 수 있습니까? 그렇다면 어떻게해야합니까?