我正在使用一个三元运算符编写简短的“ if”语句的小型脚本。代码如下:

self.checked ? psswrd[z].type = 'text' : psswrd[z].type = 'password';


这实际上表示,如果选中了输入,则将输入类型设置为“文本”,否则将其设置为密码。我觉得我在重复自己,这是错误的。

理想情况下,我想做这样的事情:

psswrd[z].type ? 'text' : 'password';


但是,如何检查正在检查的“如果”部分呢?我对这种三元方法是陌生的,因此解释将大有帮助,谢谢。

完整循环(如果需要):

for ( var j = 0; j < checkz.length; j++ ) {

            var self = checkz[j];
            self.onchange = function () {
                for ( var z = 0; z < psswrd.length; z++ ) {

                    self.checked ? psswrd[z].type = 'text' : psswrd[z].type = 'password';

                }
            }

        }

最佳答案

?:一样使用的三元运算符[condition] ? [code1] : [code2]会对condition求值,如果其值为true,它将返回code1,否则返回code2code1code2都不会被评估,只是其中之一将永远不会发生。这就是为什么

var abc = test == null ? "no" : test.something()

test是否为null都将起作用。

该运算符通常用于a = condition ? code1 : code2之类的设置,那么它等效于

if (condition)
  a = code1;
else
  a = code2;


在您的情况下,您将必须使用

psswrd[z].type = self.checked ? 'text' : 'password';

相当于

if (self.checked)
  psswrd[z].type = 'text';
else
  psswrd[z].type = 'password';


一般用法的微小变化只是condition ? code1 : code2,这将导致执行code1或code2,并且返回值将被丢弃。
或者,您也可以在var num = 17 + (test ? -17 : 25)之类的其他组件中使用它,如果将test评估为true,它将num设置为0,如果将false评估为num,则设置为42。

关于javascript - JavaScript三元运算符用法说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17656849/

10-12 07:15