在 JavaScript 中设置变量的语法

Syntax for setting a variable in javascript

本文关键字:语法 变量 设置 JavaScript      更新时间:2023-09-26

(编辑:我在阅读别人的代码时发现了这种语法)

是否有任何充分的理由使用以下语法在 javascript 中设置变量:

this.index >= this.items.length && (this.index = 0);

只是为了在一行代码上获取表达式,还是有另一个,我敢说更好,这样做的原因......

编辑:代码等效于:

if (this.index >= this.items.length) { 
    this.index = 0; 
}

哇,没有。只是没有。我认为自己是一个相当优秀的JavaScript程序员,我不能告诉你这段代码是做什么的。

它只是做this.index = this.items.length还是做一些像this.index = false这样奇怪的事情?

如果您打算:

if (this.index >= this.items.length) {
    this.index = 0;
}

然后,您可以考虑:

this.index = (this.index >= this.items.length) ? 0 : this.index;

但这并没有真正改善它,不是吗?

不,没有充分的理由,我认为人们只是经常这样做,所以它是一个"单行",你最好使用这样的if

if( this.index >= this.items.length ) {
    this.index = 0;
}

因为正如你所看到的,人们对它的实际作用感到困惑。

但是你仍然可以像这样保持一个衬里

if( this.index >= this.items.length ) { this.index = 0; }
我认为

这段代码的意图是

 this.index = this.index >= this.items.length ? this.items.length : 0;

 this.index = this.index >= this.items.length ? 0 : this.items.length;

第三个可能的意图(这可能是它应该做的)。

 this.index = this.index >= this.items.length ? 0 : this.index;

但这只是最好的猜测,这条线根本没有任何意义......而且您通常不会像这样分配变量。实际上,它甚至没有分配变量this.index。

实际上,您的代码确实有效。请参阅此处的工作示例:http://jsfiddle.net/Elak/EthsP/

在 tbh 之前从未见过这种语法,我写了很多 JavaScript...但是你永远不会停止学习新东西:p