Pourquoi x = x || 4
ou x=(x||5)
génère-t-il une erreur ReferenceError: x is not defined
, mais var x=x || 4
fonctionne comme prévu?"x = x || 4" génère l'erreur `ReferenceError: x is not defined`
Répondre
Vous tentez d'utiliser une variable qui n'a pas été déclarée auparavant. Cela entraîne une erreur de référence.
[edit] autant de mots faux.
[sortie] @grc a bien compris.
x = x || 4
signifie l'affectation de x ou 4 dans la variable x. si x est nul 4 est affecté à la variable x
.
Peut-être n'avez-vous pas déclaré la variable x
. c'est la raison pour laquelle vous obtenez x is not defined
Si vous essayez ci-dessous fonctionner:
var x;
x=x||4;
alert(x);
Cela permettra également de travailler:
x=x||4;
var x;
alert(x);
Quel est le problème en réponse ??? –
En effet, les déclarations de variables sont traitées en premier (levage). Le MDN page on var
explique bien:
Because variable declarations (and declarations in general) are processed before any code is executed, declaring a variable anywhere in the code is equivalent to declaring it at the top. This also means that a variable can appear to be used before it's declared. This behaviour is called "hoisting", as it appears that the variable declaration is moved to the top of the function or global code.
Ainsi, les éléments suivants travailleraient aussi:
x = x || 4;
var x;
Alors, pourquoi 'x = (x || 5)' génère-t-il une erreur? De plus, je ne veux pas utiliser 'var', la variable devrait être déclarée globalement. – PHPst
Parce que la variable «x» n'est pas connue par l'analyseur - et une tentative d'accès à sa valeur renvoie 'ReferenceError'. Si vous voulez vraiment aller avec des variables globales, utilisez 'window.x = window.x || 4' syntaxe. – raina77ow
Notez que 'x = window.x || 4' fonctionnera bien en mode non strict, mais en mode strict jette une erreur. – raina77ow
- 1. ReferenceError: $ is not defined
- 2. ReferenceError: $ is not defined strange
- 3. ReferenceError non interceptée: $ is not defined jQuery
- 4. "ReferenceError: edit is not defined" dans le modèle hiérarchique knockoutjs?
- 5. javascript - (objet) is not defined
- 6. `x NE null` pas les mêmes que NOT (x IS NULL)`
- 7. Non intercepté ReferenceError: RichFaces n'est pas défini Richfaces 3.x à 4.x
- 8. away3d 3.x vs away3d 4.x
- 9. HttpClient migration 3.x à 4.x
- 10. API Google Map: Gdirections is Not defined
- 11. Comment puis-je résoudre le message d'erreur "ReferenceError: expect is not defined"?
- 12. définir USE (x) (x) = (x)
- 13. Pourquoi je reçois cette erreur Javascript "connection is not defined"?
- 14. vernis 4 x-cache miss
- 15. Zombie.js "assert is not defined" pour plusieurs visites?
- 16. PHP Fatal error: Class 'X' not found
- 17. SOLR 4.x vs 3.x différences parsedquery
- 18. Apache Camel 2.x et Servicemix 3.x/4
- 19. Différence entre 3.x iPhone SDK et 4.x
- 20. Différence entre OpenGL 3.x et 4.X?
- 21. Migration de HttpClient 3.x à 4.x
- 22. Pourquoi (x & 3) est-il identique à (x mod 4)?
- 23. Visualisation différente Android sur 2.x et 4.x
- 24. std :: string x (x);
- 25. Bibliothèques en hibernation 4.x
- 26. SearchManager Android version 4.x
- 27. CAS 4.x, & Attributs LDAP
- 28. calculer `[1, x^1, x^2, ..., x^n]` dans Haskell
- 29. Tesseract: Text2Image not found (Mac OS X)
- 30. Bibliothèque statique et XCode 4.x
'x = x' est opération d'affectation, pas de comparaison – hindmost