我有两个小例子代码:
// example 1:
var x;
...
x = x || 'some value'; //assign some value to x if x has no value
...
// example 2:
var y;
...
y || (y = 'some value'); //assign some value to y if y has no value
...
我的问题是:
1.当x已经有值时,x会在示例1中重新分配它的值吗?
2.示例2比示例1更好吗?
(我的英语不好。感谢您的阅读和回答:D)
答案 0 :(得分:2)
x
具有真值,则会将其分配回自身。如果没有,则会为其分配默认'some value'
。答案 1 :(得分:1)
x
只会重新分配它的值,因为它已经有值
var x = 'foo';
x = x || 'some value';
// result: x = 'foo' //reassigned the value of x
example1
答案 2 :(得分:-1)
在示例1中,javascript将第一次传递值undefined分配给x。 在第二遍(当你的代码运行时) x在行
处未定义值var x;
然后||运算符如下。考虑一下:
左||右
if(left未定义(全局解析为true),然后返回左侧 否则返回
所以是的,一个值将被重新分配给x(x本身或1) 当x解析为未定义,或运算符正确解析,然后将1分配给x。 所以x = x || 1,以x的值结束=== 1
第二个例子 不,它增加了简单的逻辑(但仍然有效)