Maison > interface Web > Questions et réponses frontales > Résumer 15 compétences de développement JavaScript (organisées et partagées)

Résumer 15 compétences de développement JavaScript (organisées et partagées)

WBOY
Libérer: 2022-01-06 17:37:29
avant
1760 Les gens l'ont consulté

Cet article partagera avec vous quelques astuces souvent utilisées dans les projets. JavaScript possède de nombreuses fonctionnalités intéressantes que la plupart des développeurs débutants et intermédiaires ne connaissent pas. J'espère que cela aide tout le monde.

Résumer 15 compétences de développement JavaScript (organisées et partagées)

1. Ajouter conditionnellement des propriétés aux objets

Nous pouvons utiliser l'opérateur spread (...) pour ajouter rapidement des propriétés aux objets JS de manière conditionnelle.

const condition = true;
const person = {
  id: 1,
  name: 'John Doe',
  ...(condition && { age: 16 }),
};
Copier après la connexion

L'opérateur && renvoie la dernière expression évaluée si chaque opérande est évalué comme vrai. Ainsi, un objet {age: 16} est renvoyé, qui est ensuite développé pour faire partie de l'objet personne.

Si la condition est fausse, JavaScript fera quelque chose comme ceci :

const person = {
  id: 1,
  name: '前端小智',
  ...(false), 
};
// 展开 `false` 对对象没有影响
console.log(person); // { id: 1, name: 'John Doe' }
Copier après la connexion

2. Vérifiez si l'attribut existe dans l'objet

Vous pouvez utiliser le mot-clé in pour vérifier si un certain attribut existe dans l'objet JavaScript. .

const person = { name: '前端小智', salary: 1000 };
console.log('salary' in person); // true
console.log('age' in person); // false
Copier après la connexion

3. Noms de propriétés dynamiques dans les objets

Définir les propriétés des objets à l'aide de clés dynamiques est simple. Utilisez simplement ['key name'] pour ajouter des propriétés :

const dynamic = 'flavour';
var item = {
  name: '前端小智',
  [dynamic]: '巧克力'
}
console.log(item); // { name: '前端小智', flavour: '巧克力' }
Copier après la connexion

La même astuce peut être utilisée pour référencer les propriétés d'un objet à l'aide de clés dynamiques :

const keyName = 'name';
console.log(item[keyName]); // returns '前端小智'
Copier après la connexion

4. Déstructuration d'objets à l'aide de clés dynamiques

Nous le savons dans les objets. Lors de la déstructuration, vous pouvez utiliser : pour renommer les propriétés déstructurées. Mais saviez-vous que vous pouvez également déconstruire les propriétés d’un objet lorsque le nom de la clé est dynamique ?

const person = { id: 1, name: '前端小智' };
const { name: personName } = person;
console.log(personName); // '前端小智'
Copier après la connexion

Maintenant, nous utilisons des clés dynamiques pour déstructurer les propriétés :

const templates = {
  'hello': 'Hello there',
  'bye': 'Good bye'
};
const templateName = 'bye';
const { [templateName]: template } = templates;
console.log(template); // Good bye
Copier après la connexion

5. Opérateur de fusion de valeurs nulles

L'opérateur ?? est utile lorsque nous voulons vérifier si une variable est nulle ou indéfinie. Lorsque son opérande gauche est nul ou indéfini, il renvoie l'opérande droit, sinon il renvoie son opérande gauche.

const foo = null ?? 'Hello';
console.log(foo); // 'Hello'
const bar = 'Not null' ?? 'Hello';
console.log(bar); // 'Not null'
const baz = 0 ?? 'Hello';
console.log(baz); // 0
Copier après la connexion

Dans le troisième exemple, 0 est renvoyé car même si 0 est considéré comme faux en JS, il n'est ni nul ni indéfini. Vous pensez peut-être que nous pouvons utiliser l'opérateur || mais il y a une différence entre les deux

Vous pensez peut-être que nous pouvons utiliser l'opérateur || ici, mais il y a une différence entre les deux.

const cannotBeZero = 0 || 5;
console.log(cannotBeZero); // 5
const canBeZero = 0 ?? 5;
console.log(canBeZero); // 0
Copier après la connexion

6. Chaîne facultative ?.

Rencontrez-vous souvent des erreurs comme celle-ci : TypeError : Impossible de lire la propriété « foo » de null. C'est un problème ennuyeux pour chaque développeur. Un chaînage facultatif a été introduit pour résoudre ce problème. Jetons un coup d'oeil :

const book = { id:1, title: 'Title', author: null };
// 通常情况下,你会这样做
console.log(book.author.age) // throws error
console.log(book.author && book.author.age); // null
// 使用可选链
console.log(book.author?.age); // undefined
// 或深度可选链
console.log(book.author?.address?.city); // undefined
Copier après la connexion

Vous pouvez également utiliser la chaîne de fonctions facultative suivante :

const person = {
  firstName: '前端',
  lastName: '小智',
  printName: function () {
    return `${this.firstName} ${this.lastName}`;
  },
};
console.log(person.printName()); // '前端 小智'
console.log(persone.doesNotExist?.()); // undefined
Copier après la connexion

7. Utilisez l'opérateur !!

 !! en une valeur booléenne (vrai ou faux) :

const greeting = 'Hello there!';
console.log(!!greeting) // true
const noGreeting = '';
console.log(!!noGreeting); // false
Copier après la connexion

8. Conversion de chaînes et d'entiers

Utilisez l'opérateur + pour convertir rapidement des chaînes en nombres :

const stringNumer = '123';
console.log(+stringNumer); //123
console.log(typeof +stringNumer); //'number'
Copier après la connexion

Pour convertir rapidement des nombres en chaînes, vous pouvez également utiliser le symbole de l'opérateur +, suivi d'une chaîne vide :

const myString = 25 + '';
console.log(myString); //'25'
console.log(typeof myString); //'string'
Copier après la connexion

Ces conversions de types sont très pratiques, mais elles entraînent moins de clarté et de lisibilité du code. Par conséquent, le développement réel nécessite une sélection et une utilisation minutieuses.

9. Vérifiez les fausses valeurs dans le tableau

Tout le monde aurait dû utiliser les méthodes de tableau : filter, some, each. Ces méthodes peuvent être utilisées avec la méthode booléenne pour tester les valeurs vraies et fausses.

const myArray = [null, false, 'Hello', undefined, 0];
// 过滤虚值
const filtered = myArray.filter(Boolean);
console.log(filtered); // ['Hello']
// 检查至少一个值是否为真
const anyTruthy = myArray.some(Boolean);
console.log(anyTruthy); // true
// 检查所有的值是否为真
const allTruthy = myArray.every(Boolean);
console.log(allTruthy); // false
Copier après la connexion

Voici comment ça marche. Nous savons que ces méthodes de tableau acceptent une fonction de rappel, nous passons donc un booléen comme fonction de rappel. La fonction booléenne elle-même accepte un paramètre et renvoie vrai ou faux selon la vérité du paramètre. Donc :

myArray.filter(val => Boolean(val));
Copier après la connexion

équivaut à :

myArray.filter(Boolean);
Copier après la connexion

10. Aplatissement des tableaux

Il existe une méthode plate sur le prototype Array qui crée un seul tableau à partir d'un tableau de tableaux.

const myArray = [{ id: 1 }, [{ id: 2 }], [{ id: 3 }]];
const flattedArray = myArray.flat(); 
//[ { id: 1 }, { id: 2 }, { id: 3 } ]
Copier après la connexion

Vous pouvez également définir un niveau de profondeur, spécifiant la profondeur à laquelle une structure de tableau imbriquée doit être aplatie. Par exemple :

const arr = [0, 1, 2, [[[3, 4]]]];
console.log(arr.flat(2)); // returns [0, 1, 2, [3,4]]
Copier après la connexion

11.Object.entries

La plupart des développeurs utilisent la méthode Object.keys pour parcourir les objets. Cette méthode renvoie uniquement un tableau de clés d'objet, pas de valeurs. Nous pouvons utiliser Object.entries pour obtenir des clés et des valeurs.

const person = {
  name: '前端小智',
  age: 20
};
Object.keys(person); // ['name', 'age']
Object.entries(data); // [['name', '前端小智'], ['age', 20]]
Copier après la connexion

Pour parcourir un objet, nous pouvons procéder comme suit :

Object.keys(person).forEach((key) => {
  console.log(`${key} is ${person[key]}`);
});
// 使用 entries 获取键和值
Object.entries(person).forEach(([key, value]) => {
  console.log(`${key} is ${value}`);
});
// name is 前端小智
// age is 20
Copier après la connexion

Les deux méthodes ci-dessus renvoient le même résultat, mais Object.entries est plus facile à obtenir les paires clé-valeur.

Méthode 12.replaceAll

En JS, pour remplacer toutes les occurrences d'une chaîne par une autre chaîne, nous devons utiliser une expression régulière comme celle-ci :

const str = 'Red-Green-Blue';
// 只规制第一次出现的
str.replace('-', ' '); // Red Green-Blue
// 使用 RegEx 替换所有匹配项
str.replace(/\-/g, ' '); // Red Green Blue
Copier après la connexion

Mais dans ES12, une nouvelle méthode nommée replaceAll était ajouté à String.prototype, qui remplace toutes les occurrences d'une chaîne par une autre valeur de chaîne.

str.replaceAll('-', ' '); // Red Green Blue
Copier après la connexion

13. Séparateur de nombres

Vous pouvez utiliser le trait de soulignement comme séparateur de nombres, ce qui permet de compter facilement le nombre de 0 dans le nombre.

// 难以阅读
const billion = 1000000000;
// 易于阅读
const readableBillion = 1000_000_000;
console.log(readableBillion) //1000000000
Copier après la connexion

下划线分隔符也可以用于BigInt数字,如下例所示

const trillion = 1000_000_000_000n;
console.log(trillion); // 1000000000000
Copier après la connexion

14.document.designMode

与前端的JavaScript有关,设计模式让你可以编辑页面上的任何内容。只要打开浏览器控制台,输入以下内容即可。

document.designMode = 'on';
Copier après la connexion

15.逻辑赋值运算符

逻辑赋值运算符是由逻辑运算符&&、||、??和赋值运算符=组合而成。

const a = 1;
const b = 2;
a &&= b;
console.log(a); // 2
// 上面等价于
a && (a = b);
// 或者
if (a) {
  a = b
}
Copier après la connexion

检查a的值是否为真,如果为真,那么更新a的值。使用逻辑或 ||操作符也可以做同样的事情。

const a = null;
const b = 3;
a ||= b;
console.log(a); // 3
// 上面等价于
a || (a = b);
Copier après la connexion

使用空值合并操作符 ??:

const a = null;
const b = 3;
a ??= b;
console.log(a); // 3
// 上面等价于
if (a === null || a === undefined) {
  a = b;
}
Copier après la connexion

注意:??操作符只检查 null 或 undefined 的值。

【相关推荐:javascript学习教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:juejin.im
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal