JavaScript est un langage typé dynamiquement qui prend en charge divers types de données tels que les nombres, les chaînes, les valeurs booléennes, les tableaux, etc. En plus de ces types de données de base, JavaScript fournit également des types primitifs moins couramment utilisés, notamment BigInt et Symbol. Ce blog technique présentera l'utilisation spécifique et les avantages de BigInt et Symbol.
BigInt
BigInt représente un entier de précision arbitraire et peut gérer des valeurs qui dépassent la valeur entière maximale pouvant être représentée par le type Number. BigInt a été introduit depuis ES2020 et peut être créé à l'aide de littéraux numériques ou du constructeur BigInt().
Voici un exemple de création et de fonctionnement de BigInt :
let bigNum = 123456789012345678901234567890n;
console.log(bigNum); // 输出:123456789012345678901234567890n
let a = 198273479238471289432n;
let b = 342139048901234n;
console.log(a + b); // 输出:198273479238471631666n
On peut voir que la variable de type BigInt doit se terminer par le caractère "n" pour représenter le type de BigInt. Dans les opérations, BigInt peut effectuer des opérations telles que l'addition, la soustraction, la multiplication, la division et le module avec d'autres valeurs de type BigInt, mais l'opérateur "+" ne peut pas être utilisé pour connecter des types de chaîne.
Symbole
Le symbole est un nouveau type de données dont la valeur est unique et immuable. Symbol a été introduit depuis ES2015 et peut être créé avec le constructeur Symbol() ou la méthode statique Symbol.for().
Le symbole est principalement utilisé pour identifier l'unicité des noms d'attributs d'objet, comme illustré dans l'exemple suivant :
const id = Symbol('id');
let user = {
name: 'Tom',
[id]: '001'
};
console.log(user[name]); // 输出:Tom
console.log(user[id]); // 输出:001
On peut voir qu'à travers le nom de propriété du type Symbol, nous pouvons facilement identifier l'unicité des différentes propriétés dans l'objet. En pratique, il est souvent utilisé dans les bibliothèques et les frameworks pour éviter les conflits de noms de propriété.
Dans le même temps, le type Symbol possède également des constantes intégrées, telles que Symbol.iterator, Symbol.toPrimitive, etc., qui sont utilisées pour définir des comportements au niveau du langage tels que les itérateurs et les conversions de type.
En résumé, deux types primitifs, BigInt et Symbol, sont moins couramment utilisés, mais fournissent une grande aide dans la pratique. BigInt peut gérer de très grands nombres entiers et Symbol fournit une solution fiable pour éviter le problème des collisions de noms de propriété. Lorsque vous utilisez ces deux types de données, vous devez décider de les utiliser en fonction des besoins réels et des spécifications grammaticales.