【发布时间】:2015-07-02 19:50:56
【问题描述】:
假设你有一个类似的函数
function variableFunTime(varname){
console.log("I ran a function, even if the variable was bad");
};
你有变量
var aValidVar = "123";
var aValidVar2 = "456";
然后你像
一样运行函数variableFunTime(NopeNotValid);
这方面的一个用例可能是一个检查变量是否存在或其他东西的函数,但似乎不可能在没有得到 ReferenceError 并且函数永远不会运行的情况下引用无效变量。
function IsThisAValidTicket(ticket){
//check if ticket exists and return false if not
}
标记为与此相同的其他问题不同的原因是从它们定义的解决方案在函数内部不起作用
【问题讨论】:
-
你是对的。它会抛出一个
ReferenceError,但为什么首先不声明该变量?您能否更好地解释一下上下文,以便我们提出解决方案? -
是的,我知道 if,但如果函数不运行,它就不起作用。 @JosephMarikle 我将在问题中添加一个示例。
-
@Melissa:
typeof是唯一适用于未声明变量的东西。如果您正在执行其他任何操作,例如函数调用,则会引发异常。你不会解决这个问题的。 -
但是你为什么还要检查它是否存在呢?它永远不会存在!如果要在不同的范围内创建变量,则需要将其设为全局变量。
-
您应该始终在您将要调用它们的范围内声明所有变量。或者,作为闭包声明非常接近您调用它们的位置,或者作为非常仔细选择的全局变量。如果您需要在运行函数之前验证变量是否已声明,那么您可能做错了什么(除非它是一个框架/库)。属性是另一回事。
标签: javascript variables referenceerror