Javascript 为什么这个程序不打印页面中的任何内容?

Javascript 为什么这个程序不打印页面中的任何内容?,javascript,conditional-operator,Javascript,Conditional Operator,//这个程序计算一个数字可被2整除的次数 //这是将其拆分为2的次数和数量 let Num=64 let divisible=0 //这是三元运算符,它基本上提出了一个问题 Num % 2 === 0 ? divisible=divisible++ : document.write(divisible); Num/=2; Num % 2 === 0 ? divisible=divisible++ : document.write(di

//这个程序计算一个数字可被2整除的次数

//这是将其拆分为2的次数和数量

    let Num=64
    let divisible=0
//这是三元运算符,它基本上提出了一个问题

    Num % 2 === 0 ?
    divisible=divisible++ : document.write(divisible);

    Num/=2;

    Num % 2 === 0 ?
    divisible=divisible++ : document.write(divisible);

    num/=2

    Num % 2 === 0 ?
    divisible=divisible++ : document.write(divisible);
//一旦语句的计算结果为false,它将写入该数字被除的次数
通过2到文档中。

您可以尝试使用循环

let num=64;
let divisible=0;
while(num % 2 === 0) {
    num /= 2;
    divisible++;
}
console.log(divisible);
document.write(divisible);

这里根据64给出的示例,没有提供循环,它永远不会转到 document.writedivisible语句在上面提供的3个步骤中。这就是为什么什么都没印出来

此外,divisible=divisible++没有任何意义。在这里,由于它是后缀运算符,第一个值将被赋值,然后它将递增,所以可除的值将仅为0


而且,根据我的理解,document.write接受字符串参数,但这里的divisible是数字类型。

这段代码有几个问题。一些评论指出了循环问题。然而,有一个突出的问题不会通过循环来解决,那就是对++的滥用。此运算符返回值,然后递增值,因此divisible=divisible++将导致divisible保持不变。基于您的意图,您所需要做的就是整除++

请尝试以下操作:

whiletrue{ ifNum%2==0{ 可除++; Num/=2; } 否则{ document.writedivisible; 打破 } }
因为64可以被2除3次以上,所以这不会打印任何东西?64,32,16都可以被2除。虽然num!=所以它只是检查64和32是否可以被2整除,document.write分支永远不会触发。这个程序没有意义。另外,为什么不先尝试自己解决赋值问题呢?顺便说一句,在这里使用三元运算符不是一个好的做法。如果/否则更合适。
Num % 2 === 0 ?divisible++ : document.write(divisible);