2

브라우저는 어떻게 동일한 이름의 여러 함수 선언을 처리합니까?브라우저는 어떻게 동일한 이름을 가진 여러 함수 선언을 처리합니까?

특정 테스트 케이스는 다음과 같습니다. 참고 : 서버 스크립트가 동일한 이름의 함수 선언을 두 개 이상 작성할 수는 없지만 호기심이 많으므로 응답 전에 이것을 알아 두십시오. 이것은 순전히 행동 ​​연구를위한 것입니다.

우리의 CMS는 하나의

<div class="targetMeWithThis"></div> 

로 구성되는 "위젯"과의 여러 인스턴스를 생성하는

function startWidgetFunction() { 
var param1 = $server.Variable1 
var param2 = $server.Variable2 
var param3 = $server.Variable3 
} 

서버는이의 여러 인스턴스를 위젯이있는 페이지를 렌더링 할 때 그것, 어떻게 브라우저가 어떤 자바 스크립트 함수가 사용되는 결정합니까? 실제로 각각 별도의 객체 (함수)를 만드는 브라우저가 있습니까?

감사합니다,이 특정 인스턴스에서 J

답변

2

(자바 스크립트에서) 거의 모든 것이 기능을 포함하여 객체입니다. 즉, 함수 정의를 덮어 쓰는 것은 변수를 덮어 쓰는 것과 똑같이 작동합니다.

var myFunc = function() { 
    alert('1'); 
}; 

myFunc(); // alerts '1' 

var myFunc = function() { 
    alert('2'); 
}; 

myFunc(); // alerts '2' 
이미 선언 된 변수를 선언하는 것은 그것에 대해 경고합니다 좋은 연습과 많은 코드 품질 도구 (jslint, jshint 등) 아니라고

http://jsfiddle.net/KgKgf/3/

참고.

+0

실제로. 주요 브라우저 중 어떤 것이 잘못되거나 예상치 못한 방식으로 처리되는지 궁금합니다. 운좋게도 CMS가 추가 인스턴스를 자체적으로 트리밍하는 것처럼 보입니다. – user1226337

1

: function는 예약 키워드이기 때문에 브라우저에 오류가 발생합니다

function = startWidgetFunction() { 
var param1 = $server.Variable1 
var param2 = $server.Variable2 
var param3 = $server.Variable3 
} 

.

다른 변수 이름이 주어지면, (글로벌) 변수에 값을 할당하는 것입니다. 변수는 위젯 스크립트를 연속적으로 실행할 때마다 새로운 (동일한) 함수로 덮어 씁니다.

+0

죄송합니다. 함수와 함수 이름 사이에 = 기호를 포함시키려는 것이 아닙니다. – user1226337

관련 문제