Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中声明多个变量时缺少逗号的后果?_Javascript_Comma - Fatal编程技术网

在javascript中声明多个变量时缺少逗号的后果?

在javascript中声明多个变量时缺少逗号的后果?,javascript,comma,Javascript,Comma,我是javascript新手,最近学习了另一个团队开发的应用程序 在这个程序中,一次声明几个变量的地方缺少一个逗号,如: var me = this, missing = this.missingComma grid = something.Something; 如果第二个条目后面没有逗号,会有什么后果呢。仅在运行时,相关位似乎起作用。代码没有测试,因为它是javascript,我无法编译它,我也不知道它应该做什么,所以不幸的是,“没有摔倒”是我目前对“做它应该做的事”的最好猜

我是javascript新手,最近学习了另一个团队开发的应用程序

在这个程序中,一次声明几个变量的地方缺少一个逗号,如:

var me = this,
    missing = this.missingComma
    grid = something.Something;
如果第二个条目后面没有逗号,会有什么后果呢。仅在运行时,相关位似乎起作用。代码没有测试,因为它是javascript,我无法编译它,我也不知道它应该做什么,所以不幸的是,“没有摔倒”是我目前对“做它应该做的事”的最好猜测


它为什么有效?这不是一个语法错误吗?

在JavaScript中,分号不需要表示行尾。换行符足以表示下一行是单独的语句,而不是前一行代码的延续(如使用逗号表示多个变量时)

您的代码基本上与此相同:

var me = this, missing = this.missingComma;
grid = something.Something;

由于声明的
grid
变量没有
var
关键字,因此最终将在全局范围(而不是当前范围)中创建
grid
。这通常是你想要避免的事情,但如果真的发生了,这并不是世界末日——在这种情况下,这甚至可能是有意的(尽管我猜不是)。

在JavaScript中,分号不需要表示一行的结束。换行符足以表示下一行是单独的语句,而不是前一行代码的延续(如使用逗号表示多个变量时)

您的代码基本上与此相同:

var me = this, missing = this.missingComma;
grid = something.Something;

由于声明的
grid
变量没有
var
关键字,因此最终将在全局范围(而不是当前范围)中创建
grid
。这通常是你想要避免的事情,但如果真的发生了,那也不会是世界末日——在这种情况下,它甚至可能是有意的(尽管我猜不是)。

Javascript是无处不在的,有很多自由;)

如果您阅读一些关于Javascript中分号、逗号和换行符的附加信息,可能会帮助您理解JS的一些特性:

为了可读性,我建议您使用经典方法

var me  = this;
var you = that;
或者至少

var me = this, you = that;

至于其他方面,我认为安东尼·格里斯特(Anthony Grist)已经说到了点子上。

Javascript是一种具有很大自由度的含糊不清的语言;)

如果您阅读一些关于Javascript中分号、逗号和换行符的附加信息,可能会帮助您理解JS的一些特性:

为了可读性,我建议您使用经典方法

var me  = this;
var you = that;
或者至少

var me = this, you = that;

至于其他方面,我认为Anthony Grist已经说到点子上了。

好吧,尽管在javascript中不需要分号,但现在必须使用分号,因为如果要最小化javascript,它必须使用所有分号。最小化将您的整个JavaScript放在一行中。。。用短变量名替换长变量名等

另一方面。。。回到你的问题上来

如果在JavaScript“名称空间”(实际上是一个对象)中声明var,那么所有变量都是“私有”的,您可以使用

这是一个很好的实践,否则所有变量都在windows范围内声明。。。这实际上可以被页面中使用相同变量名的任何其他部分覆盖,即使您认为它是完全独立的

所以你可以这样做:

var MyNamespace || {} 
// this delcares an object MyNamespace only if it doesn't exists yet
MyNamespace.Logic = function(){
    var self = this,
    myPrivateVariable = "Hello",
    self.myPublicVariable = "World",
    self.printHello = function(){
        alert(myPrivateVariable +' ' +self.myPublicVariable );
    };//this semicolon closes the var statement
};
现在,您可以在页面上使用以下逻辑

var newInstanceOnMyLogic = new MyNamespace.Logic() 
这相当于写作 var newInstanceOnMyLogic=new window.MyNamespace.Logic()

但是您的变量myPrivateVariable和myPublicVariable不再位于windows上下文中,无法覆盖

现在如果你写一些类似的东西

alert(newInstanceOnMyLogic.myPublicVariable);
你会得到一个“世界”

但是

你会得到一个未定义的

及 newInstanceOnMyLogic.printHello()


即使在javascript中不需要分号,也会收到“Hello World”的警报,这是一个必须的条件,因为如果您希望javascript最小化,它必须具有所有分号。最小化将您的整个JavaScript放在一行中。。。用短变量名替换长变量名等

另一方面。。。回到你的问题上来

如果在JavaScript“名称空间”(实际上是一个对象)中声明var,那么所有变量都是“私有”的,您可以使用

这是一个很好的实践,否则所有变量都在windows范围内声明。。。这实际上可以被页面中使用相同变量名的任何其他部分覆盖,即使您认为它是完全独立的

所以你可以这样做:

var MyNamespace || {} 
// this delcares an object MyNamespace only if it doesn't exists yet
MyNamespace.Logic = function(){
    var self = this,
    myPrivateVariable = "Hello",
    self.myPublicVariable = "World",
    self.printHello = function(){
        alert(myPrivateVariable +' ' +self.myPublicVariable );
    };//this semicolon closes the var statement
};
现在,您可以在页面上使用以下逻辑

var newInstanceOnMyLogic = new MyNamespace.Logic() 
这相当于写作 var newInstanceOnMyLogic=new window.MyNamespace.Logic()

但是您的变量myPrivateVariable和myPublicVariable不再位于windows上下文中,无法覆盖

现在如果你写一些类似的东西

alert(newInstanceOnMyLogic.myPublicVariable);
你会得到一个“世界”

但是

你会得到一个未定义的

及 newInstanceOnMyLogic.printHello()


将收到“Hello World”的警报

我想说做
var me=this,you=that比不包含新行更具可读性。至少对我来说,它使扫描代码变得更容易/更快,并查看正在声明哪些变量以及它们的值将是什么,因为每一行都是一个单独的变量。很明显,对于如何使代码最具可读性,每个人都有不同的想法。这是事实,这是个人偏好的问题