Blogger Information
Blog 40
fans 0
comment 1
visits 34614
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
JavaScript初学习之赋值、传参、模板字面量、标签函数、解构赋值、访问器属性、流程控制:循环的初认识
景云
Original
575 people have browsed it

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","----------");
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post