¿Conoces estas cosas interesantes en Javascript?

Nov 29 2022
1. ¿Por qué la salida del siguiente código es tan extraña ? Es posible que tenga una pregunta sobre por qué solo se convierte a 0 porque en javascript el operador del algoritmo de comparación está diseñado de tal manera que convierte valores no numéricos en valores numéricos.

1. ¿Por qué la salida del siguiente código es tan extraña ?

console.log(null > 0);   // false
console.log(null === 0); // false
console.log(null >= 0);  // true

Es posible que tenga una pregunta sobre por qué solo se convierte a 0 porque en javascript el operador del algoritmo de comparación está diseñado de tal manera que convierte valores no numéricos en valores numéricos. En eso, convierte el valor booleano (verdadero o falso) a 1 y 0, nulo a 0 e indefinido a falso. Puede consultar más aquí .

Para resumir esto, podemos decir que para la primera declaración nulo> 0 reemplaza internamente con 0> 0 debido al algoritmo de comparación de JavaScript, la segunda declaración nulo === 0 da falso porque aquí estamos tratando de verificar la igualdad de nulo con 0 usando operador de igualdad (==, ===).

2. ¿Cuántos parámetros puede pasar en JSON.parse() o JSON.stringify() ?

Vamos a verlos uno por uno.

JSON.stringity():

Syntax: JSON.stringify(value, [replacer, space])

const user = {
    firstName: 'John',
    lastName: 'Williams',
    dob: "12-31-1997"
}

console.log(JSON.stringify(user));

// Output 
{"firstName":"John","lastName":"Williams","dob":"12-31-1997"}

console.log(JSON.stringify(user, ['firstName', 'lastName'], 5));

// Output

{
     "firstName": "John",
     "lastName": "Williams"
}

Syntax: JSON.parse(text, [reviver])

En el ejemplo anterior, supongamos que queremos convertir dob a tipo Fecha antes de que se analice. Se puede hacer con la función de revisor como se muestra a continuación.

const reviewer = (key, value) => {
    if (key === 'dob') {
        value = new Date(value);
    }
    return value;
}

JSON.parse(JSON.stringify(user), reviewer)

// Output

{
  dob: Wed Dec 31 1997 00:00:00 GMT+0530 (India Standard Time) {}
  firstName: "John"
  lastName: "Williams"
}

Significa que crear un objeto al que no se le permite cambiar el valor de su propiedad impide agregar una nueva propiedad o eliminar una propiedad del objeto. Vamos a ver cómo funciona.

Objeto.congelar() :

Se usa para congelar el objeto de una manera simple, podemos decir que no puede agregar, eliminar o cambiar ninguna propiedad de los objetos. También se puede resumir en que el objeto está disponible para fines de solo lectura.

const obj = {
  firstName: 'Richard',
  lastName: 'Williams'
}

Object.freeze(obj); // Will not allowed to change any value or to add new property in it

obj.dob = '31-12-1991'; // Will give error if use strict is applied else it ignores
obj.firstName = 'John';

console.log(obj);

// Output 

{
    firstName: 'Richard',
    lastName: 'Williams'
}

Objeto.sello():

Si solo queremos que el objeto se comporte de la misma manera que lo hace object.freeze(), pero los valores de las propiedades del objeto se pueden escribir pero el prototipo del objeto no se puede cambiar, entonces podemos usar object.seal()

En simple, al usar esto, podemos cambiar los valores de los objetos, pero no podemos agregar o eliminar ninguna clave de objeto.

const obj = {
  firstName: 'Richard',
  lastName: 'Williams'
}

Object.seal(obj); // Will allow to change only value of it's, can't add new property in it

obj.dob = '31-12-1991';
obj.firstName = 'John';
delete obj.firstName;


console.log(obj);

// Output 

{
    firstName: 'John',
    lastName: 'Williams'
}

  1. Como desarrollador de JS, debe haber usado reduce() en alguna parte. Es una función realmente buena proporcionada por javascript y también hay una función más que se comporta exactamente como reduce() y es reduceRight() pero la diferencia es que funciona de derecha a izquierda mientras que reduce() funcionará de izquierda a derecha en la matriz.
  2. Para aplanar el número N de la matriz anidada, puede usar Array.flat(Infinity) .
  3. Asignación coalescente nula (??=) :
  4. const obj = { name : 'Johnathon'};
    obj.name ??= 'John';
    obj.age ??= 25;
    console.log(obj.name, obj.age); // Johnathon 25
    

const obj = { 
  name : 'John',
  age: 24
};

obj.name &&= 'Johnathon';
obj.age &&= 25;
console.log(obj.name, obj.age); // Johnathon 25

5. Asignación lógica OR (||=) :

const obj = { 
  name : '',
  age: 25
};

obj.name ||= 'Johnathon';
obj.age ||= 40;
console.log(obj.name, obj.age); // Johnathon 25

Para obtener más consejos sobre programación y JavaScript, asegúrese de seguirlos. ¡Gracias por leer!

¡Feliz codificación ❤️!…