Javascript:在同一行中声明一个变量两次 - 它是什么意思(例如.Var x = this.time = this.time || this.time();)

时间:2016-03-21 16:30:33

标签: javascript

我最近发现了以下代码,但我以前从未见过这样的JS。它是什么意思,它有效吗?

TextView b[i] = (TextView) findViewById(R.id.text\"i\"); (like in javascript)

4 个答案:

答案 0 :(得分:3)

此代码是

的缩写形式
this.time = this.time || Data.now();
Var x = this.time; 

但是在其他方面使用这种编码方式时必须要小心,例如,

var a = b = 10;

因为在上面这种情况下,b将成为一个全局变量。

答案 1 :(得分:0)

评估从右到左进行。

首先评估this.time || Data.now()

作为逻辑OR语句,它从左到右进行评估

所以采取的措施是

如果定义this.time,则this.time等于自身,否则this.time等于当前时间。

最后一部分是声明一个变量x,它等于this.time设置的任何值,如上所述

答案 2 :(得分:0)

在像这样的变量赋值中使用时,||运算符充当默认值机制。该声明基本上是在说:

“将x设置为this.time,除非this.time未初始化,然后使用Date.now()”。

有关详细信息,请参阅Addy Osmani关于||运算符的文章:https://addyosmani.com/blog/exploring-javascripts-logical-or-operator/

答案 3 :(得分:0)

这种价值归属从右到左发生。

Var x = this.time = this.time || Date.now(); 

如果this.timeDate.now(),则this.time收到undefined。并且Var x会收到this.time值;

您可以使用一个单独的值声明多个变量,就像在Javascript中一样: 例如

var name_a = 'Maria';
var name_b = 'Mario';
console.log(name_a);//Maria
console.log(name_b);//Mario

name_b = name_a = 'Paul';
console.log(name_a);//Paul
console.log(name_b);//Paul

Mozzila Reference of Variables Assignment