Maison > php教程 > PHP开发 > Une explication détaillée des commandes ES6 let et const

Une explication détaillée des commandes ES6 let et const

高洛峰
Libérer: 2016-12-29 13:20:21
original
1220 Les gens l'ont consulté

Les variables déclarées par let et const ne sont valables qu'à l'intérieur du bloc de code

{
let a = 10;
var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
Copier après la connexion

Il n'y a pas de promotion de variable

La variable doit être en cours d'utilisation après la déclaration, sinon une erreur sera signalée

var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}
Copier après la connexion

Les déclarations répétées ne sont pas autorisées

// 报错
function () {
let a = 10;
var a = 1;
}
Copier après la connexion

Portée au niveau du bloc

function f() { console.log('I am outside!'); }
(function () {
if(false) {
// 重复声明一次函数f
function f() { console.log('I am inside!'); }
}
f();
}());
//I am inside! ES5 函数提升
//I am outside! ES6 块级作用域
Copier après la connexion

commande const

déclare une constante en lecture seule. Une fois déclarée, la valeur de la constante ne peut pas être modifiée

Une fois qu'une variable est déclarée, elle doit être initialisée immédiatement et ne peut pas être laissée pour une affectation ultérieure

Variables globales déclarées par la commande let, la commande const et la commande class n'appartiennent pas à l'objet global Attributs

var a = 1;
// 如果在Node的REPL环境,可以写成global.a
// 或者采用通用方法,写成this.a
window.a // 1
let b = 1;
window.b // undefined
Copier après la connexion

Laissez-moi vous présenter la commande const d'ES6 séparément

Il n'y a toujours pas eu de constante dans js avec ecma comme concept de base, es6 compense ce défaut

const foo='foo';
foo='bar';//TypeError: Assignment to constant variable.
Copier après la connexion

L'exemple ci-dessus déclare une constante d'un type de base. Si vous essayez de modifier la valeur initiale, il signalera une erreur ; s'il s'agit d'une valeur de type référence, la même chose s'applique, mais il y a une chose à noter par exemple : <. 🎜>

const foo=[];  
foo=[1];//Assignment to constant variable.
Copier après la connexion

Signaler une erreur normalement, rien à redire, regardez encore :

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

Pourquoi cela ne signale-t-il pas d'erreur ? Et la modification peut-elle réussir ? La différence entre ces deux exemples est que le premier a modifié le pointeur (vous devez être familier avec les types de référence js) et le contenu correspondant a changé, tandis que le second ne pointe pas vers le même mais le contenu de l'objet a changé. Pour foo, c'est juste qu'un pointeur se charge de pointer vers l'objet correspondant. Quant au contenu de l'objet, cela n'a pas d'importance pour moi, donc il peut être modifié si vous ne voulez pas que le contenu change, vous le faites. peut utiliser une autre méthode ;

const foo=Object.freeze([1,2,3]);
foo[1]=4;
console.log(foo)//[1, 2, 3]
Copier après la connexion

De cette façon, vous n'avez pas à vous soucier d'être modifié

Pour plus de détails ; articles sur les commandes let et const dans ES6, veuillez faire attention au site Web PHP chinois !


Étiquettes associées:
source:php.cn
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
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal