博客列表 >JavaScript初学习之赋值、传参、模板字面量、标签函数、解构赋值、访问器属性、流程控制:循环的初认识

JavaScript初学习之赋值、传参、模板字面量、标签函数、解构赋值、访问器属性、流程控制:循环的初认识

景云
景云原创
2021年02月26日 16:12:44586浏览

1.赋值

  1. // 1.2 值传递:原始类型、string、number、bool
  2. let a=1;
  3. let b=a;
  4. console.log("a=%d,b=%d",a,b);
  5. // 更新a,不影响b
  6. a=2;
  7. console.log("a=%d,b=%d",a,b);
  8. // 1.2引用传递:引用类型、object、array
  9. let obj={a:1,b:2};
  10. let obj2=obj;
  11. console.log(obj);
  12. // 更新obj时,obj2将同步更新
  13. obj.a=10;
  14. console.log(obj);
  15. console.log(obj2);

2.传参,传参时无论什么类型,都是“值传递”

  1. const f1=x=>(x=10);
  2. let m1=5;
  3. console.log("m1=%d",m1);
  4. f1(m1);
  5. console.log("m1=%d",m1);
  6. // 入参:调用函数时传入的参数。
  7. // 以上两个输出结果都是m1=5,可以看出来函数中对参数的更新,并不会影响到入参
  8. const f2=x=>(x.a=10);
  9. let o={a:1,b:2};
  10. console.log(o); //{ a: 1, b: 2 }
  11. f2(o);
  12. console.log(o);//{ a: 10, b: 2 }
  13. // 此时使用函数时,看上去对o.a的更新失效了,实际上仍然是值传递;对于引用类型,只有全新赋值才算是更新,修改其属性不算的,赋值一个新的对象才算是更新。
  14. const f3=x=>(x={});
  15. f3(o);
  16. console.log(o);//{a:10,b:2}
  17. // 此时使用函数后,入参未变化,说明函数中对于对象参数/引用参数的更新并不影响入参。

3.模板字面量

  1. 将表达式嵌入到字符串中,使用反引号:“`”;组成部分:1.字符串字面量,例如下面的“+,=”;2.变量或者表达式:x,y,(x+y);
  1. let x=1,y=2;
  2. let res=x+"+"+y+"="+(x+y);
  3. console.log(res);//1+2=3
  4. // 使用模板字面量时上面简化
  5. let res2=`${x}+${y}=${x+y}`;
  6. console.log(res2);//1+2=3
  7. // 模板字面量创建多行字符串可保留格式
  8. let menu=["首页","视频","文章"];
  9. let htmlStr=`<ul>
  10. <li><a href="">${menu[0]}</a></li>
  11. <li><a href="">${menu[1]}</a></li>
  12. <li><a href="">${menu[2]}</a></li>
  13. </ul>`;
  14. console.log(htmlStr);
  15. // 将创建的字符串添加到body中
  16. document.body.insertAdjacentHTML("beforeEnd",htmlStr);

4.标签函数

  1. 定义模板字面量的行为;使用标签函数来处理模板字面量时,它的参数约定:1.第一个参数:模板字面量中的字符串字面量组成的数据;2.第二个参数开始,将模板字面量中的变量依次传入。
  2. let sum=(strs,a,b)=>{
  3. console.log(strs);
  4. console.log(a,b,);
  5. }
  6. sum(["+","=",""],a,b);
  7. sum`${a}+${b}=`;
  8. // 使用rest进行简化
  9. sum=(strs,...arrs)=>{
  10. console.log(strs);
  11. console.log(arrs);
  12. }
  13. sum`${a}+${b}=`;

5.解构赋值

  1. 快速从集合数据(数组、对象)中结构出独立变量
  1. let x=1,y=2,t;
  2. // t=x;
  3. // x=y;
  4. // y=t;
  5. // console.log("x=%d,y=%d",x,y);
  6. // 可用结构简化
  7. [y,x]=[x,y];
  8. console.log("x=%d,y=%d",x,y);

6.访问器属性

  1. const product={
  2. data:[
  3. {name:"电脑",price:5000,num:3},
  4. {name:"手机",price:3000,num:10},
  5. {name:"电视",price:2000,num:5}
  6. ],
  7. getAllPrice(){
  8. return this.data.reduce((t,c)=>(t+=c.price*c.num),0);
  9. },
  10. //访问器属性:将方法伪造成一个属性,其优先级高于同名的普通属性
  11. get total(){
  12. return this.data.reduce((t,c)=>(t+=c.price*c.num),0);
  13. },
  14. // 使用访问器属性修改属性值
  15. set setPrice(price){
  16. this.data[1].price=price;
  17. }
  18. };
  19. console.log("总金额:",product.getAllPrice());
  20. console.log("总金额(访问器属性):",product.total);
  21. console.log(product.data[1])
  22. product.setPrice=1988;
  23. console.log(product.data[1])

7.流程控制:循环

7.1while,入口判断;需满足初始变量、循环条件、条件更新
  1. <!-- 以数组为例 -->
  2. const colors=['red','green','blue'];
  3. let i=0;
  4. while(i<colors.length){
  5. console.log("%c%s","color:red",colors[i]);
  6. i++;
  7. }
  8. console.log("%c%s","color:green","----------");
7.2 while,出口判断;条件不满足时,至少也会执行一次循环体
  1. i=0;
  2. do {
  3. console.log("%c%s","color:blue",colors[i]);
  4. i++;
  5. } while(i<colors.length);
  6. console.log("%c%s","color:green","----------");
7.3 for(初始变量,循环条件,条件更新)
  1. for(let i=0;i<colors.length;i++){
  2. console.log("%c%s","color:green",colors[i]);
  3. }
  4. console.log("%c%s","color:green","----------");
7.3.1 对象使用for-in;
  1. const lesson={name:"js",core:40};
  2. for(let key2 in lesson){
  3. console.log("%c%s","color:violet",lesson[key2]);
  4. }
  5. console.log("%c%s","color:green","----------");
7.3.2 for-in也可以遍历数组
  1. for(let key3 in colors){
  2. console.log("%c%s","color:red",colors[key3]);
  3. }
  4. console.log("%c%s","color:green","----------");
7.4 for-of是遍历的终结者,将所有的集合类型的数据遍历进行了统一;不可以遍历自定义对象,因为其不是一个可以迭代的对象。
  1. for(let key4 of colors){
  2. console.log("%c%s","color:blue",key4);
  3. }
  4. console.log("%c%s","color:green","----------");
上一条:rem 、em、vh、 vw下一条:pdo操作
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议