我看起来很有点,所以请原谅我,如果已经回答了这个问题。
我也很好奇实际的术语叫什么; 对于我正在处理的论证类型,它是“不明确的”吗?
无论如何,问题是我希望能够调用这样的函数:
prompt(_.define(variable, "DEFAULT VALUE"));
基本上,变量可以有默认值。
但是,每次我尝试这样做时,都会收到此错误:
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
以下是源代码:
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?");
不确定为什么会这样做?我以前在函数中调用了未定义的变量作为参数,它运行得很好。
答案 0 :(得分:1)
完全未声明的变量无法在JS中传递;你只能传递声明的变量或其他变量的未声明的属性。
换句话说:
var a; // you can do _.defined(a)
var a = undefined; // you can do _.defined(a)
a.b; // you can do _.defined(a.b), even though we never defined b
答案 1 :(得分:1)
基本上,变量可以有默认值。
为什么不用默认值初始化变量?
或者,只需在调用defined
之前初始化变量。
var variable; // Note that this will not overwrite the variable if it is already set.
或者,甚至更好。
var variable = variable || 'default';