在浏览器控制台中input时,var x = 10和x = 10有什么区别?

在浏览器控制台中,如果我键入var x=10它显示undefined而如果我键入x=10它显示10 。 两者执行相同的任务,然后有什么区别? 我不是要求区别使用var和不使用var?

你在浏览器控制台,所以你是在全球范围alerady,有或没有variables没有变化如何存储没有区别:

证明

但是, =是一个返回值的操作符,所以a = 1将计算为1,当您键入b = 2时,您会看到a b = 2var不返回任何东西,它是一个语句不是一个expression式。

说明

情况x = 10

这将在名为x的全局范围中创build一个值为10的variables。 此外,这是一个expression式,它返回值10 。 这是有用的,以便能够做的事情,如var x = y = 10; 它将xy设置为10

案例var x = 10

这会在当前范围内创build一个variables,这恰好是全局范围,名为x ,值为10 。 因为它是用var语法创build的,所以它不能作为一个expression式来计算,所以它返回undefined ,这会被打印到控制台。

概要

虽然在其他地方会出现,但从控制台写入var x = 10 vs x = 10效果没有区别。 后者在严格模式下也是不允许的。 然而,第一个返回undefined因为运行时,没有输出,但是第二个返回10因为x=10是一个expression式。

如果您使用eval您可以看到发生了什么好一点

 var output = eval('x = 10'); console.log(output) // 10 

VS

 var output = eval('var x = 10'); console.log(output) // undefined 

情况1:

在浏览器控制台上inputx = 10时,基本上可以看到10,因为10是一个由浏览器控制台返回的int值。

情景2:当你在浏览器控制台inputvar x = 10时,你会得到“未定义”,因为它显示了每个命令的返回值,在这种情况下控制台不返回任何东西。

并进一步欲了解更多参考访问这里:

http://blog.modulus.io/absolute-beginners-guide-to-nodejs

var x = 10; 设置当前范围的值(以函数内部为例)。

x = 10; 设置全局范围的值,所以无处不在。

如果在函数或其他非全局范围内使用var,则该variables不是全局variables。 如果在variables名之前没有使用var,那么你已经创build了一个全局variables。

/

 / These are both globals var foo = 1; bar = 2; function() { var foo = 1; // Local bar = 2; // Global // Execute an anonymous function (function() { var wibble = 1; // Local foo = 2; // Inherits from scope above (creating a closure) moo = 3; // Global }()) } 

如果你没有做任务,那么你需要使用var:

 var x; // Declare x 
 // they both define var x and set it value to 10,but they are diff about below // x is globally x = 10 // x is scopely var x = 10 

在浏览器env中,全局平均值var被定义为对象window的属性

但要小心使用第一个代码,它可能会导致全局定义variables。

如果它在strict mode这将无法正常工作 ,因为隐式定义的全局是不允许的。