2017-02-20 1 views
3

아래의 setInterval 메서드의 차이점은 누구에게 알려주십시오. setInterval에서 함수를 매개 변수로 전달하는 가장 좋은 방법은 무엇입니까?setInterval 매개 변수의 차이점

function red_on(){ 
    $('#red_light').css('opacity', 1); 
} 

setInterval(function() { 
    red_on(); 
}, 4000); 

setInterval(red_on, 4000); 

답변

1

마지막 방법이 가장 좋습니다.

기본적으로 첫 번째 방법에서는 익명 함수 내에서 function (red_on())을 실행하고 있습니다. 당신은 두 가지 기능을 가지고 있습니다.

setInterval은 첫 ​​번째 매개 변수로 함수를 사용하므로 익명 함수를 만들지 않고도 실행하려는 함수를 전달할 수 있습니다.

red_on() (console.log와 같은) 다른 작업을 수행하려는 경우 첫 번째 방법이 더 좋습니다.

TL; DR 큰 차이가 없습니다.

0

두 번째 방법은이 경우 올바른 방법입니다. 나는 그것을 사람들로 묘사 할 것이다. 두 번째 방법으로 Red_on이라는 사람과 이야기하고 싶다면 Red_on에 직접 이야기하고있는 것입니다. 첫 번째 접근법은 여전히 ​​Red_on과 이야기하고 있지만 익명의 기능이나 다른 사람을 끌어 들여 대화를 나누는 것입니다. 따라서 Red가 여전히 메시지를받는 동안 익명의 기능에 또 다른 단계를 추가하는 것입니다.

0

차이는 없습니다.

성능면에서 두 번째 방법은 익명의 함수를 만들지 않고 참조 만 사용하는 것이 좋습니다. 첫 번째 경우 동일한 결과를 얻기 위해 두 번 함수를 생성합니다.

2

일부 매개 변수를 함수에 전달해야하는 경우 첫 번째 방법을 사용할 수 있습니다. 그렇지 않으면 두 번째 방법이 더 간단하고 읽기 쉽습니다.

예 :

function red_on(opacity){ 
    $('#red_light').css('opacity', opacity); 
} 

setInterval(function() { 
    red_on(1); 
}, 4000); 

setInterval(red_on, 4000); <-- Here you cannot pass parameters 

조각은 다음을 참조하십시오 :

function test(par1){ 
 
    console.log(par1); 
 
} 
 

 
setInterval(function() { 
 
    test("message every 4 seconds"); 
 
}, 4000); 
 

 
setInterval(test("message2: called just one time!"), 4000);

나는 당신을 도움이되기를 바랍니다. 안녕.