我正在讨论前缀增量运算符,我们似乎遇到了分歧。
运行此代码时:
var x = 0;
x = ++x;
第二行是否等于:
很难区分差异,因为结果是相同的(两者都导致x
的值为1)
我认为,当赋值的左侧是变量本身时,值不会保存到原始变量。
我的对手不同意,认为只要使用操作符,值就会保存到原始变量中。
我们谁是对的?
做:
var x = 0;
console.log(++x); // will make print 1
做:
var x = 0;
console.log(x++); // will make print 0
console.log(x); // will print 1
试着用完整的英语句子写出x
和x
:x
:将x增加1并返回值x
:返回x的值,并将其增加。
你的第二行(x=x;
)相当于x=(x=1)
,是的。
看看你写过的任何循环:
for (var i = 0;i<100;i++)//<-- no need for another assign here
所以你可以写x
都是一样的,但是由于该表达式是整个语句,所以如果您编写
x
或
x
。。。
您可能知道,
xxsomeVar
将变量递增1,将结果值赋给该变量,然后返回它,someVar
返回变量的当前值,然后将其递增1(当然,新值也会赋给该变量)。
So
x
相当于x=(x1)
从语言规范:
前缀增量运算符
后缀增量运算符
它已保存,因此与第一个示例类似。以该代码为例:
var v = 0;
v = ++v + ++v + ++v;
// Returns 6
这是因为这将转化为:
v = (0+1) + ((0+1)+1) + (((0+1)+1)+1);
或者,更准确地说:
v = 0+1 +
v = 1+1 + //Previous value of v + 1
v = 2+1 //Previous value of v + 1
为什么啊?
v
将首先保存v的增量值,然后返回该增量值
要简化操作,请在控制台中尝试以下操作:
x = 0;
++x;
如果x
解析为x1
,那么x
的值现在仍然是0
,对吗
不,您的x
将是1
。这意味着x
中必须有赋值运算符。
问题内容: 我对post 和pre 运算符感到困惑,例如以下代码 会打印10吗? 它打印10,但我希望它应该打印11 但是当我这样做 它会按照我的预期输出11,所以为什么x = x ++; 不会改变x的值? 问题答案: 否,正确的打印输出为10。理解结果背后原因的关键是预分配和后分配复合分配之间的差异。当使用预增量时,表达式的值在执行增量后获取。但是,当您使用后递增时,表达式的值 在 递增 之前
本文向大家介绍Javascript 赋值机制详解,包括了Javascript 赋值机制详解的使用技巧和注意事项,需要的朋友参考一下 今天回答了一个关于 Javascript 的问题,涉及到了赋值问题,因此想把这个问题好好总结下。 执行上述代码后,变量 a 和 b 的值会发生改变吗? 原始值和引用值 在 之前的文章中介绍过原始值和引用值,原始值指的 Undefined, Null, Boolean,
本文向大家介绍javascript实现连续赋值,包括了javascript实现连续赋值的使用技巧和注意事项,需要的朋友参考一下 最近项目接触,时间比较充足,到网上逛逛了逛无意中在网上发现了这个问题,预知的结果和真实结果相差太大。 请看下面代码 如果把代码拆开来看,结果就是我们所想的那样 分析代码: a.x=a={n:2} js的赋值运算是右结合的,上面等同于a.x=(a={n:2}) js的求值运
问题内容: 我知道您可以在JavaScript中执行以下操作: 其中变量将在第一表达式的值,如果它不是,或。在这种情况下,它将被分配给第二条语句的值。 但是,当我们使用逻辑AND运算符时,变量将分配给什么? 非假的时候会发生什么?假的 时候会发生什么? 只是学习JavaScript,我很好奇结合AND运算符的赋值会发生什么。 问题答案: 基本上,逻辑与运算符(),将返回第二操作数的值,如果第一个是
问题内容: 我正在阅读“学习节点”这本书,但陷入了一个非常简单的问题,这个问题我并没有考虑太多:javascript中的赋值。 作者指出,我们应该意识到,通过使用Node的REPL,以下内容将返回undefined: 而以下代码将在REPL中返回“ 2”: 这是为什么?上面的代码不是归因吗?怎么会?如果var’a’直到代码中的那个点才存在,那么为什么它不存在并归因于此? 问题答案: 根据ECMA-
2.4. 赋值 使用赋值语句可以更新一个变量的值,最简单的赋值语句是将要被赋值的变量放在=的左边,新值的表达式放在=的右边。 x = 1 // 命名变量的赋值 *p = true // 通过指针间接赋值 person.name = "bob" // 结构体字段赋值 count[x] = count[x]