正如我几乎所见,javascript会抛出消息undefined
或x is not defined
等等......
以下是一些:
var i;
var j = i;
alert(j); // undefined
var xyz;
alert(xyz); // undefined
undefined
?不,它的定义没有默认值。因此,错误消息应为:
使用未分配的本地变量' i'
使用未分配的本地变量' xyz'
的错误讯息
alert(xyz); // Uncaught ReferenceError: xyz is not defined
// or
alert(xyz === undefined); // Uncaught ReferenceError: xyz is not defined
应该成为
名称' xyz'在当前上下文中不存在
最后一次:
alert(typeof(xyz) === 'undefined'); // true
所以,问题是:你想获得nothing
的类型???如果某个内容是thing
(不是nothing
),则该类型应该是该属性。您可以在声明后立即指定它。
我的问题:我的想法是如何处理错误消息的呢?
p / s:我来自C#:)
答案 0 :(得分:2)
这里有两个概念:
undefined
简短的回答是:如果您想查看标识符当前是否在范围内,可能是也可能不在范围内,请执行以下操作:
if (typeof xyz === "undefined") {
// Either the identifier isn't in scope, or it's in scope and has
// the value undefined
}
即使typeof xyz
完全未声明, xyz
也不会抛出错误。这是(正如您所发现的)与xyz === undefined
不同,如果ReferenceError
是完全未声明的标识符,则会xyz
。
不,它的定义没有默认值。因此,错误消息应为:
Use of unassigned local variable 'i'Use of unassigned local variable 'xyz'
JavaScript没有未分配变量的概念。创建变量时,会自动为其分配值undefined
。