我最近发现了以下代码,但我以前从未见过这样的JS。它是什么意思,它有效吗?
TextView b[i] = (TextView) findViewById(R.id.text\"i\"); (like in javascript)
答案 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.time
为Date.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