处理' undefined'的错误消息在javascript中

时间:2016-07-27 08:02:20

标签: javascript

正如我几乎所见,javascript会抛出消息undefinedx 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#:)

1 个答案:

答案 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