J'ai créé une fonction comme celle-ci:
function saveItem(andClose = false) {
}
Cela fonctionne bien dans Firefox
Dans IE, il donne cette erreur sur la console:
Expected ')'
Dans Chrome, il donne cette erreur dans la console:
Uncaught SyntaxError: Unexpected token =
Les deux navigateurs marquent la source de l'erreur comme ligne de création de fonction.
javascript
jquery
Talon
la source
la source
Réponses:
Vous ne pouvez pas faire cela, mais vous pouvez à la place faire quelque chose comme:
Ceci est souvent abrégé en quelque chose comme:
Mettre à jour
Ce qui précède est vrai pour ECMAScript <= 5. ES6 a proposé des paramètres par défaut . Donc, ce qui précède pourrait plutôt lire:
la source
name = name || 'Bob';
ne doit pas être utilisé car si le nom est défini sur une valeur falsey, la valeur par défaut sera utilisée à la place du nomname = name || 'Bob'
utilisationname = (name === undefined) ? '' : name;
Ce n'est pas une syntaxe ECMAScript valide, mais c'est une syntaxe valide pour le sur-ensemble de fonctionnalités de Mozilla qu'ils ajoutent à leur implémentation du langage.
La syntaxe d'affectation des paramètres par défaut est probablement disponible dans ECMAScript 6.
la source
foo = foo || "the default"
. Ou vous pouvez vérifier le.length
de l'arguments
objet. Ou vous pouvez simplement tester chaque paramètre pourundefined
. Il existe différentes occasions d'utiliser chacun d'eux.Javascript n'autorise pas un spécificateur "par défaut".
Un moyen rapide de faire ce que vous voudriez est de changer:
à ce qui suit:
la source
andClose
sur false c'était 0 ... pas tout à fait ce à quoi je m'attendais ...var andClose = andClose === undefined? false: andClose;
Cela vous permettra de passer0
à la fonction et de ne pas la remplacer parfalse
.Le code que vous avez fourni ne fonctionnera pas dans Chrome <version 49: https://kangax.github.io/compat-table/es6/#test-default_function_parameters
Vous avez utilisé une syntaxe ECMAScript 2015 valide:
À mon avis, la meilleure façon d'utiliser les fonctionnalités d' ES2015 est de regrouper les actifs avec Browserify ou WebPack , avec une étape d'utilisation de Babel pour trans-compiler ES2015 vers ES5. De cette façon, vous n'avez pas à vous soucier de ce tableau de compatibilité du navigateur ES2015. C'est pénible de commencer la première fois, mais ça vaut le coup.
la source
Dans votre cas, vous avez une autre alternative pour être sûr que votre variable est un booléen:
La valeur par défaut est
undefined
, ettrue == undefined
=>false
, donc votre valeur par défaut serafalse
:)la source
andClose
variable est déjà affectée dans cette portée