Tipus de variables en JavaScript

Els tipus de variables en JavaScript són les categories que classifiquen els valors que poden emmagatzemar les variables. JavaScript té cinc tipus primitius i un tipus de referència o objecte. Els tipus primitius són:

El tipus de referència o objecte correspon a les variables que poden emmagatzemar objectes, és a dir, estructures de dades que agrupen propietats i mètodes. Un exemple d'objecte és un array, que és una col·lecció ordenada de valors accessibles per un índex numèric.

Per saber el tipus d'una variable, es pot utilitzar l'operador typeof, que retorna una cadena amb el nom del tipus. Per exemple:

typeof 3; // retorna "number"
typeof "hola"; // retorna "string"
typeof true; // retorna "boolean"
typeof null; // retorna "object"
typeof undefined; // retorna "undefined"
typeof [1, 2, 3]; // retorna "object"

En el codi que he proporcionat més avall, es declaren quatre variables amb diferents tipus:

El codi també escriu en el document HTML el valor i el tipus de cada variable mitjançant la funció document.write. Aquesta funció permet inserir contingut dinàmic en una pàgina web. El codi utilitza la funció JSON.stringify per convertir l'array colors en una cadena amb format JSON, que facilita la seva visualització.

Els resultats del codi HTML són els següents:

Variable d'array: ["vermell","blau","verd"] (tipus: object) Variable nul·la: null (tipus: object) Variable indefinida: undefined (tipus: undefined) Variable de funció: 8 (tipus: function)
 
    

Variable numèrica

// Variables numèriques var num = 42; // Declaració d'una variable numèrica document.write("Variable numèrica: " + num + " (tipus: " + typeof num + ")\n");

Variable de text

// Variables de text (cadenes de caràcters) var text = "Hola, món!"; // Declaració d'una variable de text document.write("Variable de text: '" + text + "' (tipus: " + typeof text + ")\n");

Variable boleana

// Variables boleanes var esCert = true; // Declaració d'una variable boleana document.write("Variable boleana: " + esCert + " (tipus: " + typeof esCert + ")\n");

Variable d'objectes

// Variables d'objectes var persona = { // Declaració d'una variable d'objecte nom: "Anna", edat: 25 }; document.write("Variable d'objecte: " + JSON.stringify(persona) + " (tipus: " + typeof persona + ")\n");d

Variable d'arrays

// Variables d'arrays var colors = ["vermell", "blau", "verd"]; // Declaració d'una variable d'array document.write("Variable d'array: " + JSON.stringify(colors) + " (tipus: " + typeof colors + ")\n");

Variables nul·les

// Variables nul·les var nul = null; // Declaració d'una variable nul·la document.write("Variable nul·la: " + nul + " (tipus: " + typeof nul + ")\n");

Variable indefinida

// Variables indefinides var indefinit; // Declaració d'una variable indefinida document.write("Variable indefinida: " + indefinit + " (tipus: " + typeof indefinit + ")\n"); // Variables de funció var suma = function(a, b) { // Declaració d'una variable de funció return a + b; }; document.write("Variable de funció: " + suma(3, 5) + " (tipus: " + typeof suma + ")\n");


Tipus de funcions

    
    //Tipus de funcions
    //Una funció és semblant a un procediment o conjunt d'instruccions que fa una tasca pero amb la particularitat que hi ha entrada i sortida d'informació
    
        // Declaració de funció
        // Aquesta forma consisteix a definir una funció amb la paraula clau function, seguida d'un nom, una llista de paràmetres entre parèntesis i un bloc de codi entre claus.
        // Les funcions declarades poden ser cridades abans o després de la seva definició, ja que són hissades (hoisted) al principi de l'abast on es troben.
        function suma(a, b) {
            return a + b;
        }

        // Expressió de funció
        // Aquesta forma consisteix a assignar una funció anònima (sense nom) a una variable o una constant.
        // Les funcions expressades només poden ser cridades després de la seva definició, ja que la variable o la constant que les conté no són hissades.
        var resta = function(a, b) {
            return a - b;
        };

        // Funció de fletxa
        // Aquesta forma consisteix a utilitzar una sintaxi més concisa per crear funcions anònimes amb la paraula clau =>.
        // Les funcions de fletxa tenen algunes diferències respecte a les altres formes, com per exemple que no tenen el seu propi objecte arguments ni el seu propi valor this.
        var multiplica = (a, b) => {
            return a * b;
        };

        // Crida a les funcions i mostra els resultats
        document.write("Suma: " + suma(3, 5) + "
"); document.write("Resta: " + resta(3, 5) + "
"); document.write("Multiplica: " + multiplica(3, 5) + "
"); // Funció anònima: és una funció que no té nom i que es pot assignar a una variable o passar com a argument a una altra funció. // Exemple: assignem una funció anònima a la variable saluda var saluda = function (nom) { document.write ("Hola, " + nom + "
"); }; // Callback: és una funció que es passa com a argument a una altra funció i que s'executa dins d'aquesta per completar alguna acció o rutina. // Exemple: passem la funció saluda com a callback a la funció repeteix function repeteix (n, callback) { for (var i = 0; i < n; i++) { callback ("Pompeu"); // cridem al callback amb el paràmetre "Pompeu" } } // Autoexecutable: és una funció que s'executa automàticament quan es defineix, sense necessitat de ser cridada després. // Exemple: definim i executem una funció autoexecutable que mostra un missatge (function () { document.write ("Aquesta és una funció autoexecutable
"); }) (); // els parèntesis finals indiquen que s'ha d'executar la funció // Clausura: és una funció que té accés a les variables i paràmetres de la seva funció externa, encara que aquesta hagi acabat. // Exemple: definim una funció externa que retorna una funció interna que fa ús de les variables de l'externa function externa (x) { var y = 2; // variable local de la funció externa function interna () { document.write ("El producte de " + x + " i " + y + " és " + x * y + "
"); } return interna; // retornem la funció interna } // This: és una paraula clau que fa referència a l'objecte actual on es troba el codi que s'està executant. // Exemple: definim un objecte persona amb un mètode que fa ús de this per accedir a les seves propietats var persona = { nom: "Anna", edat: 25, descriu: function () { document.write ("El nom és " + this.nom + " i l'edat és " + this.edat + "
"); } }; // Cridem a les funcions i mostrem els resultats saluda ("Joan"); // cridem a la funció anònima assignada a la variable saluda repeteix (3, saluda); // cridem a la funció repeteix amb el callback saluda var f = externa (5); // cridem a la funció externa i guardem el seu retorn (la funció interna) en la variable f f (); // cridem a la variable f com si fos una funció (és una clausura) persona.descriu (); // cridem al mètode descriu de l'objecte persona, que fa ús de this

Estructura if-else

        
<!DOCTYPE html>
<html>
<head>
    <title>Condicionals amb Entrada d'Usuari</title>
</head>
<body>
    <h1>Condicionals amb Entrada d'Usuari</h1>
    <p>Aquest és un exemple de com utilitzar condicionals en JavaScript amb entrada d'usuari:</p>
    
    <script>
        // Demanar a l'usuari que introdueixi l'edat
        var edat = parseInt(prompt("Introdueix la teva edat:"));
        var missatge = "";

        // Utilitzant l'if-else per assignar un missatge basat en l'edat
        if (edat >= 18) {
            missatge = "Ets major d'edat";
        } else {
            missatge = "Ets menor d'edat";
        }

        // Mostrar el missatge a la pàgina
        document.write("<p>" + missatge + "</p>");
    </script>
</body>
</html>

        
    

Estructura condicional ternària

  
        
        <!DOCTYPE html>
<html>
<head>
    <title>Operador Ternari amb Entrada d'Usuari</title>
</head>
<body>
    <h1>Operador Ternari amb Entrada d'Usuari en Català</h1>
    <p>Aquest és un exemple de com utilitzar l'operador ternari en JavaScript amb entrada d'usuari:</p>
    
    <script>
        // Demanar a l'usuari que introdueixi l'edat
        var edat = parseInt(prompt("Introdueix la teva edat:"));
        var missatge = "";

        // Utilitzant l'operador ternari per assignar un missatge basat en l'edat
        missatge = (edat >= 18) ? "Ets major d'edat" : "Ets menor d'edat";

        // Mostrar el missatge a la pàgina
        document.write("<p>" + missatge + "</p>");
    </script>
</body>
</html>
        
        
        
                
    

Estructura switch

  
           
    
<!DOCTYPE html>
<html>
<head>
    <title>Switch </title>
</head>
<body>
    <h1>Switch</h1>
    <p>Aquest és un exemple de com utilitzar un switch en JavaScript:</p>
    
    <script>
        // Demanar a l'usuari que introdueixi l'edat
        var edat = parseInt(prompt("Introdueix la teva edat:"));
        var missatge = "";

        // Utilitzant un switch per assignar un missatge basat en l'edat
        switch (true) {
            case edat >= 18:
                missatge = "Ets major d'edat";
                break;
            default:
                missatge = "Ets menor d'edat";
        }

        // Mostrar el missatge a la pàgina
        document.write("<p>" + missatge + "</p>");
    </script>
</body>
</html>
                 
    

Estructura amb una funció

  
           
    
    <!DOCTYPE html>
<html>
<head>
    <title>Funció</title>
</head>
<body>
    <h1>Funció</h1>
    <p>Aquest és un exemple de com utilitzar una funció en JavaScript:</p>
    
    <script>
        // Funció per determinar el missatge basat en l'edat
        function determinarMissatge(edat) {
            if (edat >= 18) {
                return "Ets major d'edat";
            } else {
                return "Ets menor d'edat";
            }
        }

        // Demanar a l'usuari que introdueixi l'edat
        var edat = parseInt(prompt("Introdueix la teva edat:"));
        
        // Cridar la funció i mostrar el missatge a la pàgina
        var missatge = determinarMissatge(edat);
        document.write("<p>" + missatge + "</p>");
    </script>
</body>
</html>
                     
    

Exemple 1: Try-Catch

            try {
                // Codi que pot generar un error
                let result = 10 / 0; // Divisió per zero
            } catch (error) {
                console.error(`Error: ${error.message}`);
            }
        

Exemple 2: Try-Catch-Finally

            try {
                // Codi que pot generar un error
                let result = 10 / 0; // Divisió per zero
            } catch (error) {
                console.error(`Error: ${error.message}`);
            } finally {
                console.log('La clàusula finally sempre s\'executarà.');
            }
        

Exemple Avançat: Try-Catch-Finally

            try {
                // Codi que pot generar un error
                let numerator = 10;
                let denominator = 0;
                let result = numerator / denominator; // Divisió per zero
            } catch (error) {
                console.error(`Error: ${error.message}`);
                console.error(`Error Stack Trace: ${error.stack}`);
                console.error(`Error Name: ${error.name}`);
                console.error(`Error Cause: ${error.cause || 'No cause available'}`);
            } finally {
                console.log('La clàusula finally sempre s\'executarà.');
            }
        

Explicació del Codi JavaScript amb try-catch-finally

  1. S'incorpora un bloc try:
  2. Clàusula catch:
  3. Clàusula finally:

Introdueix els coeficients de l'equació de segon grau







        

Prueba Realista con Axios, Sinon, Chai y Mocha

Resultados:

Explicació del Codi JavaScript amb Axios, Sinon, Chai i Mocha

  1. S'incorpora la biblioteca Axios:
  2. S'incorporen les biblioteques Mocha.js, Chai.js i Sinon.js:
  3. Es structure la pàgina HTML:
  4. Configuració de Mocha:
  5. Funció fetchData per realitzar una sol·licitud HTTP amb Axios:
  6. Script de prova amb Chai.js i Sinon.js:

Aquest codi és un exemple de com realitzar i mostrar proves d'unitats en una pàgina web utilitzant Mocha, Chai, Sinon i Axios, amb la capacitat de simular respostes d'Axios per validar el comportament del codi en respostes exitoses i fallides.