Maison >interface Web >js tutoriel >Conseils abrégés que les développeurs JavaScript doivent connaître (avancé)
Cet article vous apporte les compétences en abréviation que les développeurs JavaScript doivent connaître (avancées). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Lors de l'attribution de la valeur d'une variable à une autre variable, vous devez d'abord vous assurer que la valeur d'origine n'est pas nulle, indéfinie ou vide.
peut être obtenu en écrivant une déclaration de jugement contenant plusieurs conditions :
if (variable1 !== null || variable1 !== undefined || variable1 !== '') { let variable2 = variable1; }
ou abrégée sous la forme suivante :
const variable2 = variable1 || 'new';
Le code suivant peut être Coller dans es6console et testez-le vous-même :
let variable1; let variable2 = variable1 || ''; console.log(variable2 === ''); // prints true variable1 = 'foo'; variable2 = variable1 || ''; console.log(variable2); // prints foo
Si le paramètre attendu est nul ou indéfini, il n'est pas nécessaire d'écrire six lignes de code pour attribuer une valeur par défaut. valeur. Nous pouvons accomplir la même opération en une seule ligne de code en utilisant simplement un court opérateur logique.
let dbHost; if (process.env.DB_HOST) { dbHost = process.env.DB_HOST; } else { dbHost = 'localhost'; }
est abrégé en :
const dbHost = process.env.DB_HOST || 'localhost';
ES6 fournit un moyen très simple d'attribuer des attributs aux objets. Si le nom de la propriété est identique au nom de la clé, l'abréviation peut être utilisée.
const obj = { x:x, y:y };
est abrégé en :
const obj = { x, y };
Les fonctions classiques sont faciles à lire et à écrire, mais si elles sont imbriquées dans d'autres fonctions, ils sont appelés , la fonction entière devient un peu verbeuse et déroutante. À ce stade, vous pouvez utiliser les fonctions fléchées pour abréger :
function sayHello(name) { console.log('Hello', name); } setTimeout(function() { console.log('Loaded') }, 2000); list.forEach(function(item) { console.log(item); });
abrégé en :
sayHello = name => console.log('Hello', name); setTimeout(() => console.log('Loaded'), 2000); list.forEach(item => console.log(item));
La valeur de retour est ce que nous généralement utilisé pour renvoyer le mot-clé pour le résultat final de la fonction. Une fonction fléchée avec une seule instruction peut renvoyer un résultat implicitement (la fonction doit omettre les parenthèses ({ }) afin d'omettre le mot-clé return).
Pour renvoyer une instruction multiligne (telle qu'un texte d'objet), vous devez utiliser () au lieu de { } pour envelopper le corps de la fonction. Cela garantit que le code est évalué comme une seule instruction.
function calcCircumference(diameter) { return Math.PI * diameter }
est abrégé en :
calcCircumference = diameter => ( Math.PI * diameter; )
Vous pouvez utiliser les instructions if pour définir les valeurs par défaut des paramètres de fonction . ES6 prévoit que les valeurs par défaut peuvent être définies dans les déclarations de fonctions.
function volume(l, w, h) { if (w === undefined) w = 3; if (h === undefined) h = 4; return l * w * h; }
est abrégé en :
volume = (l, w = 3, h = 4 ) => (l * w * h); volume(2) //output: 24
Dans le passé, nous avions l'habitude d'utiliser "+" pour convertir plusieurs variables en chaînes , mais existe-t-il un moyen plus simple ?
ES6 fournit les méthodes correspondantes, nous pouvons utiliser des backticks et $ { } pour combiner des variables dans une chaîne.
const welcome = 'You have logged in as ' + first + ' ' + last + '.' const db = 'http://' + host + ':' + port + '/' + database;
est abrégé en :
const welcome = `You have logged in as ${first} ${last}`; const db = `http://${host}:${port}/${database}`;
L'affectation de déstructuration est une expression utilisée pour extraire rapidement les valeurs d'attribut d'un tableau ou d'un objet , et affecté à la variable définie.
En termes d'abréviation de code, l'affectation de déstructuration peut donner de bons résultats.
const observable = require('mobx/observable'); const action = require('mobx/action'); const runInAction = require('mobx/runInAction'); const store = this.props.store; const form = this.props.form; const loading = this.props.loading; const errors = this.props.errors; const entity = this.props.entity;
est abrégé en :
import { observable, action, runInAction } from 'mobx'; const { store, form, loading, errors, entity } = this.props;
Vous pouvez même spécifier votre propre nom de variable :
const { store, form, loading, errors, entity:contact } = this.props;
Les opérateurs d'expansion ont été introduits dans ES6, et l'utilisation de l'opérateur spread peut rendre le code JavaScript plus efficace et intéressant.
Certaines fonctions de tableau peuvent être remplacées à l'aide de l'opérateur spread. L'abréviation de
// joining arrays const odd = [1, 3, 5]; const nums = [2 ,4 , 6].concat(odd); // cloning arrays const arr = [1, 2, 3, 4]; const arr2 = arr.slice( )
est :
// joining arrays const odd = [1, 3, 5 ]; const nums = [2 ,4 , 6, ...odd]; console.log(nums); // [ 2, 4, 6, 1, 3, 5 ] // cloning arrays const arr = [1, 2, 3, 4]; const arr2 = [...arr];
La différence avec la fonction concat() est que l'utilisateur peut utiliser l'opérateur spread pour insérer un autre tableau dans n'importe quel tableau.
const odd = [1, 3, 5 ]; const nums = [2, ...odd, 4 , 6];
Vous pouvez également utiliser l'opérateur spread avec les symboles de déstructuration ES6 :
const { a, b, ...z } = { a: 1, b: 2, c: 3, d: 4 }; console.log(a) // 1 console.log(b) // 2 console.log(z) // { c: 3, d: 4 }
Par défaut, si vous ne fournissez pas de paramètres de fonction. S'il est transmis par valeur, JavaScript définira le paramètre de fonction sur non défini. D'autres langues émettront des avertissements ou des erreurs. Pour effectuer l'affectation de paramètres, vous pouvez utiliser une instruction if pour générer une erreur non définie, ou vous pouvez profiter des "paramètres forcés".
function foo(bar) { if(bar === undefined) { throw new Error('Missing parameter!'); } return bar; }
est abrégé en :
mandatory = ( ) => { throw new Error('Missing parameter!'); } foo = (bar = mandatory( )) => { return bar; }
Si vous avez déjà écrit la fonction de recherche en JavaScript ordinaire, vous avez peut-être utilisé pour cycle. Dans ES6, une nouvelle fonction de tableau appelée find() a été introduite, qui est un raccourci pour implémenter une boucle for.
const pets = [ { type: 'Dog', name: 'Max'}, { type: 'Cat', name: 'Karl'}, { type: 'Dog', name: 'Tommy'}, ] function findDog(name) { for(let i = 0; i<pets.length; ++i) { if(pets[i].type === 'Dog' && pets[i].name === name) { return pets[i]; } } }
est abrégé en :
pet = pets.find(pet => pet.type ==='Dog' && pet.name === 'Tommy'); console.log(pet); // { type: 'Dog', name: 'Tommy' }
Bien qu'il soit courant d'écrire foo.bar comme foo ['bar'] pratique, mais cette pratique constitue la base de l’écriture de code réutilisable.
Considérons l'exemple simplifié suivant d'une fonction de vérification :
function validate(values) { if(!values.first) return false; if(!values.last) return false; return true; } console.log(validate({first:'Bruce',last:'Wayne'})); // true
La fonction ci-dessus complète parfaitement le travail de vérification. Mais lorsqu’il existe de nombreux formulaires, une validation doit être appliquée, et il y aura différents champs et règles. Ce serait un bon choix si vous pouviez créer une fonction de validation générique pouvant être configurée au moment de l'exécution.
// object validation rules const schema = { first: { required:true }, last: { required:true } } // universal validation function const validate = (schema, values) => { for(field in schema) { if(schema[field].required) { if(!values[field]) { return false; } } } return true; } console.log(validate(schema, {first:'Bruce'})); // false console.log(validate(schema, {first:'Bruce',last:'Wayne'})); // true
Maintenant que nous avons cette fonction de validation, nous pouvons la réutiliser dans tous les formulaires sans avoir à écrire une fonction de validation personnalisée pour chaque formulaire.
Les opérateurs au niveau du bit sont les points de connaissances de base dans les didacticiels JavaScript pour débutants, mais nous n'utilisons pas souvent les opérateurs au niveau du bit. Parce que personne ne veut travailler avec des 1 et des 0 sans s'occuper du binaire.
Mais l'opérateur à double panneton a un cas très pratique. Vous pouvez utiliser des opérateurs double-bits au lieu de Math.floor( ). L’avantage de l’opérateur de positionnement double négatif est qu’il effectue la même opération plus rapidement.
Math.floor(4.9) === 4 //true
est abrégé en :
~~4.9 === 4 //true
Ce qui précède est une introduction complète aux techniques d'abréviation que les développeurs JavaScript doivent connaître (avancés), si vous souhaitez en savoir plus sur Tutoriel vidéo JavaScript , veuillez faire attention au site Web PHP chinois.
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!