Você conhece essas coisas interessantes em Javascript?

Nov 29 2022
1. Por que a saída do código a seguir é tão estranha ? Você pode ter uma pergunta sobre por que ele só é convertido em 0 porque em javascript o operador do algoritmo de comparação é projetado de forma a converter valores não numéricos em numéricos.

1. Por que a saída do código a seguir é tão estranha ?

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

Você pode ter uma pergunta sobre por que ele só é convertido em 0 porque em javascript o operador do algoritmo de comparação é projetado de forma a converter valores não numéricos em numéricos. Nele, ele converte o valor booleano (verdadeiro ou falso) em 1 e 0, nulo em 0 e indefinido em falso. Você pode consultar mais aqui .

Para resumir, podemos dizer que para a primeira instrução null > 0 substitua internamente por 0 > 0 por causa do algoritmo de comparação javascript, a segunda instrução null === 0 dá false porque aqui estamos tentando verificar a igualdade de null com 0 usando operador de igualdade (==, ===).

2. Quantos parâmetros você pode passar em JSON.parse() ou JSON.stringify() ?

Vamos vê-los um por um.

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])

No exemplo acima, suponha que queremos converter dob para o tipo Date antes de analisar. Isso pode ser feito com a função de revisor como abaixo.

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"
}

Isso significa que fazer um objeto que não tem permissão para alterar o valor de sua propriedade impede a adição de uma nova propriedade ou a exclusão de uma propriedade do objeto. Vamos ver como isso funciona.

Object.freeze() :

É usado para congelar o objeto de maneira simples, podemos dizer que você não pode adicionar, excluir ou alterar nenhuma propriedade dos objetos. Também pode ser resumido, pois o objeto está disponível para fins somente leitura.

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'
}

Object.seal():

Se quisermos apenas que o objeto se comporte da mesma maneira que o object.freeze(), mas os valores das propriedades do objeto podem ser graváveis, mas o protótipo do objeto não pode ser alterado, então podemos usar object.seal()

Simplificando, ao usar isso, podemos alterar os valores do objeto, mas não podemos adicionar ou excluir nenhuma chave do 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 desenvolvedor JS, você deve ter usado o reduce() em algum lugar. É uma função muito boa fornecida pelo javascript e, assim, também há mais uma função que se comporta exatamente como a redução () e é a reduçãoRight (), mas a diferença é que funciona da direita para a esquerda, enquanto a redução () funciona da esquerda para a direita na matriz.
  2. Para o número N plano da matriz aninhada, você pode usar Array.flat(Infinity) .
  3. Atribuição de coalescência 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. Atribuição lógica OU (||=):

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

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

Para mais dicas de programação e JavaScript, certifique-se de seguir. Obrigado por ler!

Codificação feliz ❤️!…