我在js中写了一个这个简单的代码。
var n=10;
for (i=1;i=n;i++){
console.log('avinsyh');
}
但循环执行大于2000并导致浏览器崩溃。为什么会发生这种情况呢?
注意:如果我执行此操作:
var n=10;
for (i=1;i<n;i++){
console.log('avinsyh');
}
然后javascritpt输出正确的结果
答案 0 :(得分:3)
它是for loop的比较部分中的赋值,它产生无限循环。 i
始终为n
,评估为true
。
for (i = 1; i = n; i++){
// ^^^^^
var n = 10,
i;
for (i = 1; i <= n; i++){
document.write('i: ' + i + '<br>');
}
&#13;
答案 1 :(得分:2)
在你的第一个for循环中,i=n
会将i
设置为等于n
的值,从而返回一个真值(因为n
不是0)而你获得无限循环。
答案 2 :(得分:2)
在你的for
loop中,你正在确定值override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.topItem?.title = "" // 1
let barAppearace = UIBarButtonItem.appearance()
barAppearace.setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -60), forBarMetrics:UIBarMetrics.Default) // 2
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Normal) //3
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Highlighted) //4
}
,它始终为真,因此会导致无限循环。
评估条件表达式。如果条件的值是 是的,循环语句执行。如果condition的值为false, for循环终止。如果省略条件表达式 完全,条件被认为是真实的。
在第二种情况下,您在每次迭代时比较i = n
的值,因此您得到了预期的结果。
for循环的基本语法是:
i
因此,在您的第一个案例中,您没有提供for ([initialExpression]; [condition]; [incrementExpression])
statement
而是提供作业。