2014-11-02 96 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。”