第九节:JS中的循环语句

while语句
一般在循环体中来改变判断条件的值,如果不进行值得改变,循环条件一直满足,会造成死循环。

//语法
while (条件) {
    要执行的代码块
}
//例子
while (i < 10) {
    text += "数字是 " + i;
    i++;
}

do…while 循环是 while 循环的变体,能用do…while的都能用while替代

//语法:
do {
    要执行的代码块
}
while (条件);
//实例
do {
    text += "<br>数字为 " + i;
    i++;
} while (i < 5);

for循环

//语法,第一个表达式为初始化,第二个表达式为判断,第三个表达式为更新,
for (语句 1; 语句 2; 语句 3) {
     要执行的代码块
}
//执行过程:语句1,语句2,代码块,语句3;语句1初始化只执行1次,之后执行顺序为语句2,代码块,语句3
//例子
for (i = 0; i < 5; i++) {
     text += "数字是 " + i + "<br>";
}

for循环的初始化可以写到外面,这样跟while的运行基本一致;
for循环与while循环虽然语法不同,但是执行效率是相同的
一般数组会用到循环语句

for in循环
for in循环是一个更精准的迭代,相比上面两个循环效率低,用于遍历 对象,把对象的所有属性列举(枚举)出来(枚举对象的所有属性)

//语法
for (key in object) {
  // code block to be executed
}
//遍历对象
const person = {fname:"Bill", lname:"Gates", age:19}; 
let txt = "";
for (let x in person) {
  txt += person[x] + " ";
}  
console.log(txt);//结果:Bill Gates 19
//遍历数组
const numbers = [45, 4, 9, 16, 25];
let txt = "";
for (let x in numbers) {
  txt += numbers[x];
}
console.log(txt);//45-4-9-16-25-

运行规则:

  • 先执行in后面的表达式,如果是对象直接执行下一步,如果不是对象则转化为对象,null和undefined报错或跳过
  • 把对象的一个属性取出来,然后赋值给定义in前面定义的表达式,赋值完成执行循环体,循环体完了再执行赋值,然后循环体,直到所有属性都列举完成

注意要点:

  • in前面的表达式可以是任意值,但一般为左值(即可赋值的值),一般为变量;或者是对象的一个属性
  • 和for循环不同的是,in前面的表达式每次都会被执行;for的第一个表达式只在初始化时执行一次
  • in后面的表达式也可以是数字、字符串或者布尔;如果是数字或者布尔不会进行任何操作,因为数字和布尔转换为对象是没有任何属性可被列举的;
  • 枚举是没有顺序的,但一般浏览器都是按照定义顺序进行枚举的
  • 如果是带有数字属性的,如数组字符串,会按照从0开始枚举的(但不建议使用for in,因为for in更精准所以性能较低),建议使用for或者数组forEach方法Array.forEach()

//字符串
var str = 'abcd';
var tt='';
for(let i in str){
tt += str[i];
};
console.log(tt);// 结果:abcd  new String('abcd')有可枚举属性
//数字
var str = 1234;
var tt='';
for(let i in str){
tt += str[i];
};
console.log(tt); //结果:空  new Number(1234)无可枚举属性
//布尔
var str = true;
var tt='';
for(let i in str){
tt += str[i];
};
console.log(tt); //结果:空 new Boolean(true)无可枚举属性
//特殊用法
const a=[];
let i=0;
const person = {fname:"Bill", lname:"Gates", age:19}; 
for(a[i++] in person); //将对象的属性依次放到数组中
console.log(a); // ['fname', 'lname', 'age'] 

数字、字符串、布尔的基本包装类型:new Boolean() 、new Number() 和new String()

备注:本内容学习总结来源于喜马拉雅冰山工作室沙翼老师主讲的(陪你读书(JavaScript WEB前端))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值