JS中的循环和判断

举报
小妖现世 发表于 2020/07/18 21:49:28 2020/07/18
【摘要】 今天看了一下JS中常用的判断和循环,有基础的小伙伴就当复习了,现在有很多提供好的内置API可以实现循环从而提高性能,所以在实战开发中,一般情况尽可能使用内置API来完成循环,短路判断也是非常使用,在实战中尽可使用,这是你提高你代码的优雅性,下面的是我加上我个人的理解,帮助小伙伴更好的理解JS循环和判断:JS常用判断和循环:switch case 判断(只能应用于等于什么值做什么事情,不能用户...


今天看了一下JS中常用的判断和循环,有基础的小伙伴就当复习了,现在有很多提供好的内置API可以实现循环从而提高性能,所以在实战开发中,一般情况尽可能使用内置API来完成循环,短路判断也是非常使用,在实战中尽可使用,这是你提高你代码的优雅性,下面的是我加上我个人的理解,帮助小伙伴更好的理解JS循环和判断:

JS常用判断和循环:

switch case 判断(只能应用于等于什么值做什么事情,不能用户大于或者小于啥值做啥)每一种情况结束都要设置break(当此条件成立并处理完事情后,通知代码不在向下执行),default:等价于else,而且最后一个判断结束无需设置break,每一种case情况都是基于===进行比较的(严格比较,需要保证数据类型的一致)

let x=10;

switch(x){

    case 1:

        x+=1;break; 

    case 5:

        x+=2;break;

    case 10:

        x+=4;break;

    defult:

        console.log(3);

}

break:循环体中一旦遇到break,整个循环都结束,下面代码不在执行,步长累计也不再执行

continue:循环体中遇到continue,结束本轮循环,下一轮继续,下面代码不在执行,但是步长累计会执行

遍历(循环、迭代)数组中的每一项:

var arr=[10,20,30,40];

for(var i=0;i<arr.length;i++){

    console.log(arr[i]);

}

for循环:

1.创建循环初始值

2.设置(验证)循环执行的条件

3.条件成立执行循环体中的内容

4.当前循环结束执行步长累计操作

先定义初始值,条件成立,就执行循环体里面的操作,循环完毕后,在执行操作计数,满足就继续,不满足就结束

for(初始表达式;判断表达式;自增自减运算)

var ary = [1,2,3];

for(var i= 0;i<ary.length;i++){

    console.log(ary[i]);

}

遍历对象基于for in循环:以任意顺序遍历一个对象的除Symbol以外的可枚举属性(还可以捕获到自己定义在原型上的属性,一般不会遍历数组,多用于对象)

for in 遍历的时候,是优先按照从小到大的机制遍历数字属性的,优先遍历属性名为数字的

var obj={

    name:'Jone',

    age:'12'

};

for (var key变量 in obj对象){  

    // 创建变量(存储属性) in 对象,当前对象中有多少个可枚举的属性,就循环多少次

    // key变量存储的是每一循环的属性名

    //obj[key]获取key变量对象属性名的属性

    //obj.key 或者 obj['key']获取属性名叫key的属性值

    //会把所属类原型上自定义的属性方法也遍历到

    console.log(` ${key} : ${obj[key]}`);

}

for(let k in obj){

    // k 是一个字符串

    if( obj.hasOwnProperty(k)) console.log(k);

    // 只输出obj 属性内的,自定义加的不会被获取到

}

for in:

var obj={

    name:'Jone',

    friends:'wangp,wangge',

    3:300

};

//for(var 变量(key)in 对象)

//对象中有多少组键值对,循环就执行几次(除非break结束)

for(var key in obj){

    //每一次循环key变量存储的值:当前对象的属性名

    //获取属性值:obj[属性名] => obj[key]  

    console.log('属性名:' + key + '属性值:' + obj[key]);

for ...of :在可迭代对象(包括Array,Map,Set,String,TypedArray,arguments对象等)遍历的是属性值

1、获取的是属性值

2、不会遍历原型上公有的属性方法(包含自定义的)

3、只能遍历可被迭代的数据类型值(Symbol.iterable):Array, String, Arguments, NodeList, Set, Map等,普通对象是不可被迭代的数据,不能用for of循环

for (var item of iterable){

    //变量存储的是属性值

    console.log(item);

}

while语法:

while(条件){

    code;

}

条件成立,里面的代码就会一直反复执行,没次执行前,都要对条件重新进行判断,直到条件不成立,循环结束

var i = 0;

while (i<10){

    console.log(i);

    i++;

}

do{ code}while(条件);  //先执行一次代码,然后进行条件判断,成立则继续执行循环

//遍历数组中每一项的方法

forEach:

作用:遍历数组中的每一项

参数:函数

返回值:undefined

改变原数组:不变

var ary=[1,2,3,4,5,6,3,35,,8,9];

var res=ary.forEach(function(item,index){

    alert(item);

}

console.log(res);

ary.forEach((item,index)=>{

    //数组中有多少项,函数就会被默认执行多少次

    //每一次执行函数:item是数组中当前要操作的这一项,index是当前项的索引

    console.log('索引:' +index+'内容'+item); 

});

map():与forEach类似,但是map有返回值,是一个新数组,新数组是由每一个回调函数执行时候的返回值决定的

forEach没有返回值,map有返回值是一个新数组,新数组是由每一个回调函数执行时候的返回值决定的


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。