Creé una función como esta:
function saveItem(andClose = false) {
}
Funciona bien en Firefox
En IE da este error en la consola:
Expected ')'
En Chrome da este error en la consola:
Uncaught SyntaxError: Unexpected token =
Ambos navegadores marcan la fuente del error como la línea de creación de la función.
javascript
jquery
Garra
fuente
fuente
Respuestas:
No puede hacer esto, pero puede hacer algo como:
Esto a menudo se abrevia a algo como:
Actualizar
Lo anterior es cierto para ECMAScript <= 5. ES6 ha propuesto parámetros predeterminados . Entonces, lo anterior podría leerse:
fuente
name = name || 'Bob';
no debe usarse porque si el nombre se establece en un valor falso, se usará el valor predeterminado en lugar del nombrename = name || 'Bob'
usarname = (name === undefined) ? '' : name;
Esa no es una sintaxis válida de ECMAScript, pero es una sintaxis válida para el superconjunto de características de Mozilla que agregan a su implementación del lenguaje.
Es probable que la sintaxis de asignación de parámetros predeterminada venga en ECMAScript 6.
fuente
foo = foo || "the default"
. O puede verificar el.length
delarguments
objeto. O simplemente puede probar cada parámetroundefined
. Hay diferentes ocasiones para usar cada uno.Javascript no permite un especificador "predeterminado".
Una forma rápida de hacer lo que le gustaría es cambiar:
a lo siguiente:
fuente
andClose
en falso, fue 0 ... no es exactamente lo que esperaría que hiciera ...var andClose = andClose === undefined? false: andClose;
Eso le permitirá pasar0
a la función y no reemplazarla porfalse
.El código que proporcionó no se ejecutará en Chrome <versión 49: https://kangax.github.io/compat-table/es6/#test-default_function_parameters
Usó una sintaxis válida de ECMAScript 2015:
En mi opinión, la mejor manera de utilizar ES2015 características es agrupar los activos con Browserify o WebPack , con un paso para el uso de Babel a ES2015 trans-compilación para ES5. De esa manera, no tiene que preocuparse por la tabla de compatibilidad del navegador ES2015. Es un dolor empezar por primera vez, pero merece la pena.
fuente
En su caso, tiene otra alternativa para asegurarse de que su variable sea booleana:
El valor predeterminado es
undefined
, ytrue == undefined
=>false
, por lo que su valor predeterminado seráfalse
:)fuente
andClose
variable ya está asignada en este ámbito