Eu criei uma função como esta:
function saveItem(andClose = false) {
}
Funciona bem no Firefox
No IE, ocorre este erro no console:
Expected ')'
No Chrome, dá este erro no console:
Uncaught SyntaxError: Unexpected token =
Ambos os navegadores marcam a origem do erro como a linha de criação da função.
javascript
jquery
Talon
fonte
fonte
Respostas:
Você não pode fazer isso, mas pode fazer algo como:
Geralmente é abreviado para algo como:
Atualizar
O acima é verdadeiro para ECMAScript <= 5. ES6 propôs parâmetros padrão . Portanto, o acima poderia ser:
fonte
name = name || 'Bob';
não deve ser usado porque se o nome for definido com um valor falsey, o padrão será usado no lugar do nomename = name || 'Bob'
usarname = (name === undefined) ? '' : name;
Essa não é uma sintaxe ECMAScript válida, mas é uma sintaxe válida para o superconjunto de recursos do Mozilla que eles adicionam à implementação da linguagem.
A sintaxe de atribuição de parâmetro padrão provavelmente vem no ECMAScript 6.
fonte
foo = foo || "the default"
. Ou você pode verificar o.length
doarguments
objeto. Ou você pode simplesmente testar cada parâmetro paraundefined
. Existem diferentes ocasiões para usar cada um.Javascript não permite um especificador "padrão".
Uma maneira rápida de fazer o que você gostaria é mudando:
para o seguinte:
fonte
andClose
como falso, foi 0 ... não é bem o que eu esperava ...var andClose = andClose === undefined? false: andClose;
Isso permitirá que você passe0
para a função e não a substitua porfalse
.O código fornecido não será executado no Chrome <versão 49: https://kangax.github.io/compat-table/es6/#test-default_function_parameters
Você usou a sintaxe ECMAScript 2015 válida:
Na minha opinião, a melhor maneira de usar os recursos do ES2015 é agrupar os ativos com o Browserify ou WebPack , com uma etapa para usar o Babel para trans-compilar o ES2015 para o ES5. Dessa forma, você não precisa se preocupar com o gráfico de compatibilidade do navegador ES2015. É uma pena começar da primeira vez, mas vale a pena.
fonte
No seu caso, você tem outra alternativa para garantir que sua variável seja booleana:
O valor padrão é
undefined
, etrue == undefined
=>false
, então seu valor padrão seráfalse
:)fonte
andClose
variável já está atribuída neste escopo