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.lengthdelargumentsobjeto. 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
andCloseen falso, fue 0 ... no es exactamente lo que esperaría que hiciera ...var andClose = andClose === undefined? false: andClose;Eso le permitirá pasar0a 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
andClosevariable ya está asignada en este ámbito