在Javascript中使用var关键字创建对象时遇到问题

在Javascript中使用var关键字创建对象时遇到问题,javascript,variables,console,google-chrome-devtools,Javascript,Variables,Console,Google Chrome Devtools,您好,我在用Javascript创建对象时遇到问题。 当我在Chrome中使用控制台时,我发现了一些奇怪的事情: function person(){this.Name = "John";} var a = new person() 结果:未定义 但如果我这样做 b = new person() 结果:Person{Name:“John”} 在javascript中创建对象时,使用var关键字与不使用关键字有什么区别吗?检查a的值,它实际上与b相同undefined只是表达式var a=ne

您好,我在用Javascript创建对象时遇到问题。
当我在Chrome中使用控制台时,我发现了一些奇怪的事情:

function person(){this.Name = "John";}
var a = new person()
结果:
未定义

但如果我这样做

b = new person()
结果:
Person{Name:“John”}


在javascript中创建对象时,使用
var
关键字与不使用关键字有什么区别吗?

检查a的值,它实际上与b相同
undefined
只是表达式
var a=new person()

计算的结果。在函数中,所有未声明的变量都是全局变量。只有使用var声明的才是本地的。 所以就范围而言,是的,它是不同的。
如果您在函数内部赋值,在函数外部打印,这就可以解释您的情况。

对于任何没有显式返回值的语句,Chrome都会返回undefined

e、 g

返回

未定义

要完全运行代码,请尝试

function person(){this.Name = "John";}
var a = new person();
console.log(a.Name);

这就是浏览器控制台的工作方式。它返回您执行的任何操作的值。在本例中,您的语句返回undefined。没有范围问题,因为控制台在窗口范围下运行。在firefox和chrome中都会发生


在这里很好用。省略
var
将创建一个全局变量。问题的重复项。奇怪之处在于Chrome控制台的显示(或不显示)。
var
语句没有结果值,而赋值表达式有结果值。但是,当我使用A.name时,我无法访问A.name。您不需要
return
,任何表达式语句都可以。
function person(){this.Name = "John";}
var a = new person();
console.log(a.Name);