x+=y+=z in Javascript
x+=y+=z in Javascript
我知道在javascript中
x = y = z
意味着x = z
和y = z
x+=z
的意思是x=x+z
;
所以如果我想要x=x+z
和y=y+z
,我尝试x+=y+=z
不起作用
任何人都有更好的主意来编写短代码而不是x+=z;y+=z
编辑
首先感谢参与我问题的每个人。在这里,我想解释一下为什么我首先要问这个问题。
我尝试编写一些类似x+='some html code'
的代码,我需要y+='the same html code'
。所以我自然不想先创建另一个var z='the html code
然后做x+=z
和y+=z
希望我的解释有意义。无论如何,我现在要结束这个问题。再次感谢。
假设 加法而不是串联,这有效:
x -= y - (y += z);
但说真的,不要使用它!
对于那些想要弄清楚如何做的人,评估顺序(我使用 n
来显示当前的中间结果)大致为:
n = y1 = y0 + z // n = y = (y + z)
n = y0 - y1 // -> n == -z [uses the original value of y]
x -= n // -> x += z
只需使用这个:
x+=z;y+=z
老实说,其他任何事情都会导致维护您的代码的其他人停下来并挠头几分钟。 这段代码也不是很长...
那么,x += y += z 表示:
- x
- = x + y + z y
- = y + z
因此,不可能用 x += y += z 和 y = y + z 来做 x = x + z 因为这意味着:
x += (y = y + z) -> x = x + (y = y + z)
举个例子:
function sum () {
var x = 5, y = 7, z = 3;
x += y += z;
console.log (x); // it shows 15 --> x = 5 + 7 + 3
console.log (y); // it shows 10 --> y = 7 + 3
console.log (z); // it shows 3
}
因此,您必须执行以下操作:
x += z;
y += z;
实际上x = y = z
并不意味着x = z
和y = z
。这意味着计算表达式y = z
的值,然后为该表达式的值赋值 x。这就是你错的地方。
你也可以这样做。 x = 1, y = 2, z=3
x+=(y+=z)-(y-z)
您可以使用逗号运算符:
x += (y+=z,z);
它不起作用,因为在作业中做了什么
x += y += z;
是:
y += z
首先进行评估。除了将z
添加到x
之外,此赋值还返回新的值y
作为其返回值。然后,这个新的y
值成为另一个+=
的操作数。
x += y
好吧,可能没有比简单地写你想要的东西更短的方法了
x += z; y += z;
FWIW,在 Firefox 中,您可以使用解构赋值来做你想要的事情。
Array.prototype.addToEach = function(x) {
for (var i = 0; i < this.length; i++)
this[i] += x;
return this;
};
var x = "foo", y = "bar";
[x,y] = [x,y].addToEach("baz");
console.log(x,y); // "foobaz" "barbaz"
http://jsfiddle.net/uPzNx/(蜘蛛猴实现演示)
并不是说它与解决方案有太大关系,但对于那些不喜欢本机.prototype
扩展的人来说,您可以这样做。
function addToEach(s) {
var args = Array.prototype.slice.call(arguments, 1);
for (var i = 0; i < args.length; i++)
args[i] += s;
return args;
};
var x = "foo", y = "bar";
[x,y] = addToEach("baz", x, y);
console.log(x,y); // "foobaz" "barbaz"
这适用于 jsfiddle,所以它一定是你正在做的其他事情......
x = 1, y = 2, z = 3;
x += y += z;
alert(x);
- onclick javascript in PHP
- javascript in jquery popup
- Javascript in Visual studio Web Api
- JavaScript in WebView - Android Studio
- JavaScript in Netbeans
- openDatabaseSync in Javascript in QT-Quick
- Javascript in partial (Ruby on Rails)
- javascript in onkeypress value
- 如何从 javascript in html 访问 Java 中的方法
- javascript in onXXX handler escaping of & in parameter
- Bootstrap3 remote modal with javascript in remote?
- Javascript in foreach Magento
- Indy TIdHTTPServer OnCommandGet javascript in html not execu
- Html and javascript in visual studio 2013
- JavaScript in AJAX Response
- JavaScript in SQL
- popover javascript in foreach php
- Javascript in Asp.net,C#
- JavaScript in HTML head, innerhtml 不起作用
- Load HTML with javaScript in <a href...> link