for循环:
js:使用let定义变量,则循环条件中的变量和 循环体中的变量指向不同地址。
PHP:定义的变量指向同一地址。与var 定义相同,可能会导致无限循环。
<?php
function get(){
for($i=0;$i<10;$i++){//先执行一次循环
$i='abc'; //重新定义$i,转换成数值为0,故$i始终小于10。无限输出
echo $i.'<br>';
}
}
get();//无限循环
?>
js:
<script>
function getlet(){
for(let i=0;i<10;i++){
let i='abc';
console.log(i);//输出 10个 abc
}
}
getlet();
</script>
function get(){
for(var i=0;i<10;i++){ //先进行一次循环
var i='abc';//此处i 转成数字是为:nan 此后不在进行循环
console.log(i);//故只输出 一个 abc
}
}
get();
//let声明的两个相同的变量不是同一个空间。
var a = [];
for (var i = 0; i < 10; i++) {//var 定义变量
a[i] = function () {
console.log(i);
};
}
//无论如何for循环都回先执行完成,然后在输出,此时i的值为10,所以只会输出10.
a[9]();// 输出10, 无论下标是几 输出都为10
for (let i = 0; i < 10; i++) { //let 定义变量
a[i] = function () {
console.log(i);
};
}
//let声明循环条件中的i和循环体中的i不是同一个变量,所以不会影响循环体中的变量i 的输出。
a[6]();//输出与下标相同的值