2016-07-27 54 views
-3

'未定義' 我可以看到幾乎在的情況下,JavaScript的會拋出消息undefinedx is not defined等錯誤信息......處理的在JavaScript

下面是一些:

var i; 
var j = i; 
alert(j); // undefined 

var xyz; 
alert(xyz); // undefined 

undefined?不,它的定義沒有默認值。因此,該錯誤信息應該是:

未分配的局部變量的 '我'

使用未分配的局部變量 '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

我不確定你在這裏問什麼,但似乎你想要[關於重新設計JavaScript的基本部分的討論](http://stackoverflow.com/help/dont-ask)語言。這不是正確的地方。 – Quentin

回答

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不同,如果xyz是完全未聲明的標識符,則會拋出ReferenceError

不,它的定義沒有默認值。因此,該錯誤信息應該是:

Use of unassigned local variable 'i'
Use of unassigned local variable 'xyz'

JavaScript有沒有一個未分配變量的概念。當創建一個變量時,它會自動分配值undefined

+1

我的錯誤是'沒有默認值',正確的:默認值是'undefined'。非常感謝! –