这是我的代码:
var a=false;
var b=false;
var c=true;
var d=false;
//
var x = a ? a : (b ? b : (c ? c: false)) ;
//
for(i=0;i<11;i++){
document.write(x);
}
内联if命令检查哪个变量(a,b,c) true 然后等于 x 到那个
并且在循环中它将写入10次
有两个假设:
答案 0 :(得分:2)
它包含一个拼写错误,确定它应该看起来像:
var x = a ? a : (b ? b : (c ? c: false)) ;
所以你可以测试它:
var a=false;
var b=false;
var c=false;
var d=false;
var x = a ? a : (b ? b : (c ? c: "everything false")) ;
function runTest(){
for(i=0;i<11;i++){
console.log(x);
}
}
所以当你运行Test()时会记录“所有错误” 在控制台中更改变量b = true,例如没有刷新页面,所以你的场景和runTest()它仍然会打印“一切都是假的”
所以答案是
一旦x被赋予表达式,x是表达式的结果而不是表达式本身,当你稍后打印x时,它仍然是相同的结果,即使结果是表达式现在会有所不同(因为一些gobal变量已经改变)
让x始终为“最新”使其成为一个函数
x = function () {
return a ? a : (b ? b : (c ? c: false)) ;
}
然后它会在每次通话时评估