Pergunta

Como os navegadores lidam com múltiplas declarações de funções com o mesmo nome?

O caso de teste específico está abaixo - NOTA:Eu sei que não faz sentido permitir que um script de servidor crie mais de uma declaração de função com o mesmo nome, mas estou curioso, então perceba isso antes de responder.Isso é puramente para pesquisa comportamental.

Nosso CMS cria múltiplas instâncias de um único "widget" que é composto por um

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

e um

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

Quando o servidor renderiza uma página que possui várias instâncias desse widget, como o navegador decide qual função javascript é usada?Existem navegadores que realmente criam objetos (funções) separados para cada um?

Obrigado; j

Foi útil?

Solução

em javascript, (quase) tudo é um objeto, inclusive funções.Dito isto, substituir uma definição de função funciona exatamente da mesma forma que substituir uma variável.

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

myFunc(); // alerts '1'

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

myFunc(); // alerts '2'

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

Observe que declarar uma variável que já está declarada não é uma boa prática e muitas ferramentas de qualidade de código (jslint, jshint, etc) irão avisá-lo sobre isso.

Outras dicas

Neste caso específico:

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

O navegador gerará um erro porque function é uma palavra-chave reservada.

Dado um nome de variável diferente, você está apenas atribuindo um valor a uma variável (global).A variável será substituída por uma nova função (idêntica) a cada execução sucessiva do script do widget.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top