Quelle est la différence entre var, const, let, window.prop et Object.defineProperty ?
我想大声告诉你
我想大声告诉你 2017-06-28 09:28:46
0
2
823

Veuillez expliquer la raison de l'exemple suivant :

  • 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
我想大声告诉你
我想大声告诉你

répondre à tous(2)
代言

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal