2014-11-02 64 views
-1

在下面的代碼中,變量dogName在被調用之前被聲明,但是沒有賦值給它。這意味着我期望JavaScript將它視爲null。來自javascript的奇怪錯誤消息「undefined some constant string」

function myDog() { 
    var dogName; 
    console.log(dogName + 'says woof'); 
    dogName = 'fido'; 
} 
myDog(); 

,但讓我震驚的錯誤消息是

undefined says woof 

爲什麼?我認爲錯誤信息必須是「空值!」或根本沒有錯誤信息,它可以簡單地顯示「null說woof」。

爲什麼「undefined說woof」被拋出?

編輯:這意味着「說woof」是不確定的!

+0

你沒有指定'dogName'直到'的console.log()'。在此之前它的'undefined'。 – Barmar 2014-11-02 02:39:43

+0

哦!知道了之後。你的意思是javascript已將dogName替換爲「undefined!」 – 2014-11-02 02:40:43

+1

'說woof'不是錯誤消息,它在你的'console.log()'調用中。 – Barmar 2014-11-02 02:42:05

回答

1

如果您希望變量初始化爲null,它應該是:

var dogName = null; 

否則,新變量的默認值是undefined

0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript

JavaScript的空區分,這是一個值,指示故意不值(並且只訪問通過空關鍵字),並且undefined,這是類型的值'未定義「,表示一個未初始化的值 - 也就是說,一個值還沒有被分配......在JavaScript 有可能聲明一個變量而不給它賦值。如果你這樣做,變量的類型是undefined。」