Algumas línguas - como Ruby, CoffeeScript e a próxima versão JavaScript - podem declarar parâmetros padrão ao definir uma função, como esta:
A cópia do código é a seguinte:
função myfunc (param1, param2 = "Second String") {
console.log (param1, param2);
}
// saídas: "First String" e "Second String"
myfunc ("primeiro string");
// saídas: "First String" e "Second String versão 2"
myfunc ("First String", "Second String versão 2");
Infelizmente, na versão atual do JavaScript, esta redação é inválida. Então, o que podemos fazer para implementar dessa maneira, usando nosso conjunto de ferramentas existente?
A solução mais fácil é assim:
A cópia do código é a seguinte:
função myfunc (param1, param2) {
if (param2 === indefinido) {
param2 = "Second String";
}
console.log (param1, param2);
}
// saídas: "First String" e "Second String versão 2"
myfunc ("First String", "Second String versão 2");
O fato é que um parâmetro omitido é sempre "indefinido" quando acessado. Se você tiver apenas um parâmetro, esta é uma boa solução, e se houvesse vários naquele momento?
Se você tiver mais de um parâmetro, poderá usar um objeto como parâmetro, que tem a vantagem de que cada parâmetro possui uma nomeação clara. Se você passar por um parâmetro de objeto, poderá declarar o valor padrão da mesma maneira.
A cópia do código é a seguinte:
função myfunc (paramobject) {
var defaultParams = {
Param1: "First String",
param2: "Second String",
Param3: "Terceira sequência"
};
var finalParams = defaultParams;
// Nós iteramos sobre cada propriedade do ParamObject
para (tecla var no paramobject) {
// Se a propriedade atual não foi herdada, prosseguiu
if (paramobject.HasownProperty (key)) {
// se a propriedade atual for definida,
// Adicione -o ao FinalParams
if (paramObject [key]! == indefinido) {
finalParams [key] = paramObject [key];
}
}
}
console.log (FinalParams.param1,
FinalParams.param2,
finalparams.param3);
}
myfunc ({param1: "minha própria string"});
Isso é um pouco desajeitado. Se você usar muito esse método, poderá escrever uma função de encapsulamento. Felizmente, muitas bibliotecas agora têm métodos relacionados, como o método de extensão em jQuery e sublinhado.
A seguir, usa o método de extensão de sublinhamento para alcançar o mesmo resultado acima:
A cópia do código é a seguinte:
função myfunc (paramobject) {
var defaultParams = {
Param1: "First String",
param2: "Second String",
Param3: "Terceira sequência"
};
var finalParams = _.Extend (defaultParams, paramObject);
console.log (FinalParams.param1,
FinalParams.param2,
finalparams.param3);
}
// saídas:
// "minha própria string" e "Second String" e "Third String"
myfunc ({param1: "minha própria string"});
É assim que você pode obter os parâmetros padrão na versão JavaScript atual.
As críticas e a correção de aspectos inadequados no artigo são bem -vindos.