Solución:
No hay un estándar assert
en JavaScript mismo. Quizás esté usando alguna biblioteca que proporcione una; por ejemplo, si está usando Node.js, quizás esté usando el módulo de aserción. (Los navegadores y otros entornos que ofrecen una consola que implementa la API de la consola proporcionan console.assert
.)
El significado habitual de un assert
función es lanzar un error si la expresión pasada a la función es falsa; esto es parte del concepto general de verificación de afirmaciones. Por lo general, las aserciones (como se las llama) se usan solo en compilaciones de “prueba” o “depuración” y se eliminan del código de producción.
Suponga que tiene una función que se supone que siempre aceptar una cadena. Querría saber si alguien llamó a esa función con algo que no era una cadena (sin tener una capa de verificación de tipo como TypeScript o Flow). Entonces podrías hacer:
assert(typeof argumentName === "string");
…dónde assert
arrojaría un error si la condición fuera falsa.
Una versión muy simple se vería así:
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
Mejor aún, utilice el Error
objeto, que tiene la ventaja de recopilar un seguimiento de pila y tal:
function assert(condition, message) {
if (!condition) {
throw new Error(message || "Assertion failed");
}
}
Si usa un navegador moderno o nodejs, puede usar console.assert(expression, object)
.
Para más información:
- Referencia de la API de Chrome
- Consola web Firefox
- API de consola de Firebug
- API de consola IE
- Libélula de ópera
- API de consola de Nodejs
Las otras respuestas son buenas: no hay una función de aserción integrada en ECMAScript5 (por ejemplo, JavaScript que funciona básicamente en todas partes), pero algunos navegadores se la dan o tienen complementos que brindan esa funcionalidad. Si bien probablemente sea mejor usar una biblioteca bien establecida / popular / mantenida para esto, para fines académicos, una función de “afirmación del pobre” podría verse así:
const assert = function(condition, message) {
if (!condition)
throw Error('Assert failed: ' + (message || ''));
};
assert(1 === 1); // Executes without problem
assert(false, 'Expected true');
// Yields 'Error: Assert failed: Expected true' in console