Définition variable
<script>
var a = 1
let b = 2
const c = 3
window.d = 4
Object.defineProperty(window, 'e', {
value: 5
})
console.log(a, b, c, d, e)
console.log(window.a, window.b, window.c, window.d, window.e)
</script>
输出:
1,2,3,4,5
1 undefined undefined 4 5
Répéter la déclaration
<script>
Object.defineProperty(window, 'a', {
value: 1,
writable: false
})
let a = 2
console.log(a)
console.log(window.a)
</script>
输出:
2
1
<script>
Object.defineProperty(window, 'a', {
value: 1
})
</script>
<script>
let a = 2
console.log(a)
</script>
<script>
console.log(a)
</script>
输出:
Uncaught SyntaxError: Identifier 'a' has already been declared
1
let a une portée indépendante
const déclare une constante en lecture seule. Une fois déclarée, la valeur de la constante ne peut pas être modifiée.
La variable globale sera affectée à la fenêtre (c'est peut-être ce que vous ne voulez pas)
C'est une pratique très courante d'attribuer des valeurs à l'attribut window, mais l'objet d'affectation est window
Object.defineProperty peut définir les méthodes setter et getter,
ou le rendre non modifiable, ou même l'empêcher de devenir une énumération d'objets
Le niveau Global en js est l'objet window. Ainsi, a est accessible sur la fenêtre, et d est également accessible s'il est directement affecté sur la fenêtre. e est également lié à la fenêtre.
let et const appartiennent à ES2015 Avec eux, il existe une portée au niveau du bloc, ce qui signifie que ce qu'ils définissent ne sera que dans la portée actuelle au niveau du bloc et ne sera pas accessible ailleurs.
Ensuite, la dernière invite a été occupée, je pense que cela peut s'expliquer comme ça