繁体   English   中英

Javascript:|| 变量赋值的运算符

[英]Javascript: || operator for variable assignment

我有两个小例子代码:

// 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)

  1. 是。 如果x具有真值,则将其分配回自身。 如果没有,则会为其分配默认的'some value'
  2. 示例2中可能存在微小的性能优势,但示例1是标准惯用语。 与其他程序员保持一致非常有用,因为他们可以更轻松地理解您的代码。 除非您在大型循环中进行大量默认值初始化,否则性能增益应该可以忽略不计。

x将重新分配它的值,因为它已经有一个值

    var x = 'foo';
    x = x || 'some value';
  //  result: x = 'foo' //reassigned the value of x
  • 就可读性而言,我更喜欢example1

在示例1中,javascript将第一次传递值undefined分配给x。 在第二遍(当你的代码运行时)x带有未定义的值

var x;

然后|| 运算符如下。 考虑:

左||

if(left未定义(全局解析为true),则返回left,否则返回right

所以是的,一个值将被重新分配给x(x本身或1)当x解析为undefined,或者运算符向右解析,然后将1赋值给x。 所以x = x || 1,以x的值结束=== 1

第二个例子没有它添加简单的逻辑(但仍然有效)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM