我对while循环进行了条件测试,但似乎没有用。 我认为是因为增量运算符。但我不知道为什么
<flatcheckbox:FlatCheckBox x:Name="xDGCheck" Margin="0" IsChecked="{Binding Path=Enabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
预期[3,5,7,5]
实际结果[3、5、15、7、5]
我不知道为什么会出来15个。
我想知道while循环为什么这样工作。
更新:
此问题来自《学习javascript第三》一书
和class Card extends Component {
constructor()
{
super();
this.state = {
button:"",
i:0
}
}
onClick = (event)=>{
this.setState({button: event.target.id})
if(this.state.button==="1")
{
this.setState({ i: this.state.i + 1 });
}
else if(this.state.button==="2")
{
this.setState({ i: this.state.i - 1 });
}
console.log(this.state.i)
}
render() {
return(
<div className="App">
<div >
<NavBar onButtonClick={this.onClick}/>
<CardList i={this.state.i} />
</div>
</div>
);
}
}
export default Card;
逗号运算符无法正常运行。
答案 0 :(得分:2)
这里。您应该在while循环内设置一个条件,因为如果条件为假,则整个循环将终止。
const nums = [3, 5, 15, 7, 5];
let n, i = 0;
while (i < nums.length) {
if ((n = nums[i++]) < 10) {
console.log(`Number less than 10: ${n}.`);
}
};
答案 1 :(得分:2)
如果将,纠正为&&
,则在15时,while是快捷方式。逗号运算符返回i++ < nums.length
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
您真的想研究一下ES5 / ES6并进行过滤
let smallNums = [3, 5, 15, 7, 5].filter((n) => n<10)
console.log(smallNums)
没有ES6箭头的情况:
let smallNums = [3, 5, 15, 7, 5].filter(function(n) { return n<10; })
console.log(smallNums)