Variable non définie comme argument de fonction javascript

J'ai regardé assez bien, alors pardonnez-moi si cela a déjà été répondu.

Je suis également curieux de savoir ce que le terme actuel appelle; Est-ce «Ambiguous» pour le type d'arguments que je traite?

Quoi qu'il en soit, le problème est que je veux pouvoir appeler une fonction comme celle-ci:

prompt(_.define(variable, "DEFAULT VALUE")); 

Fondamentalement, afin que les variables puissent avoir des valeurs par défaut.

Cependant, chaque fois que j'essaie de le faire, j'obtiens cette erreur:

 Timestamp: 6/11/2012 1:27:38 PM Error: ReferenceError: thisvarisnotset is not defined Source File: http://localhost/js/framework.js?theme=login Line: 12 

Voici le code source:

 function _() { return this; }; (function(__) { __.defined = function(vrb, def) { return typeof vrb === "undefined" ? ((typeof def === "undefined") ? null : def) : vrb; }; })(_()); prompt(_.defined(thisvarisnotset, "This should work?"), "Can you see this input?"); 

Vous ne savez pas vraiment pourquoi? J'ai appelé des variables non définies comme des arguments en fonctions avant et ça a bien fonctionné.

Une variable complètement non déclarée ne peut pas être transmise dans JS; Vous ne pouvez passer que les variables déclarées ou les propriétés non déclarées d'autres variables.

En d'autres termes:

 var a; // you can do _.defined(a) var a = undefined; // you can do _.defined(a) ab; // you can do _.defined(ab), even though we never defined b 

Fondamentalement, afin que les variables puissent avoir des valeurs par défaut.

Pourquoi ne pas simplement initialiser la variable avec une valeur par défaut?

Ou, il suffit d'initialiser la variable avant d'appeler defined .

 var variable; // Note that this will not overwrite the variable if it is already set. 

Ou encore mieux.

 var variable = variable || 'default';