美文网首页让前端飞
js知识点总结系列(二)

js知识点总结系列(二)

作者: itming | 来源:发表于2019-10-19 09:53 被阅读0次

11.递归调用

递归:在一个函数的内部再一次调用自己

 1*2*3*4*5
 
 5*4*3*2*1
 求5!(5*4*3*2*1) 4!(4*3*2*1) 3!(3*2*1)
       2!(2*1) 1!(1*1)

   5!=5*4!
   4!=4*3!
   3!=3*2!
   2!=2*1!
   1!=1
   通过一个函数,求数字n的阶乘
   10!=10*(10-1)!
   效率:
     在本次调用还未结束时,就开始下次的调用,本次调用就会被挂起,
     直到所有的调用都完成之后,才会依次返回,调用的次数越多,效率越低。

12.分支结构

1.if结构

if(条件){
   语句块;
}
注意:
  条件尽量是boolean的,如果不是boolean,以下情况会当做false处理
   if(0){...}
   if(0.0){...}
   if(""){...}
   if(undefined){...}
   if(null){...}
   if(NaN){...}
注意:if后的{}可以省略,但是不推荐,只控制if后的第一句话。

2.if...else...结构

   语法:
  if(条件){
     语句块
  }else{
     语句块
  }

3..if....else if...else...

  语法:
  if(条件1){
    语句块1
  }else if(条件2){
     语句块2
  }else if(条件3){
     语句块3
  }else{
     语句块n
  }

4.switch...case

 1.作用:(使用场合)
  等值判断
2.语法
  1.switch(值/表达式){
     case 值1:
    语句块1;
    break;//结束switch结构,可选的
 case 值2:
    语句块2;
    break;
    ...
 default:
   语句块n;
   break;
   }
  2.特殊用法
    执行相同操作时:
   switch(值/表达式){
       case 值1:
       case 值2:
       case 值3:
          语句块;
   }

12.循环结构

1.特点

1.循环条件:循环的开始和结束
2.循环操作:要执行的相同或相似的语句

2.循环-while

语法:
   while(条件){
      //循环体-循环操作
      
  //更新循环条件
   }

3.循环的流程控制

1.break
  作用:终止整个循环的运行
2.continue
  作用:终止本次循环的运行,继续执行下一次循环
 ex:
   循环从弹出框中录入信息,并且打印,直到输入exit为止。
   

4.循环-do...while

1.语法
  do{
     //循环体
  }while(条件);

 执行流程:
     1.先执行循环体
 2.再判断循环条件
   如果条件为真,则继续执行循环体
   如果条件为假,则跳出循环操作

5.循环-for

语法:
  for(表达式1;表达式2;表达式3){
     //循环操作
  }
  表达式1:循环条件的声明
  表达式2:循环条件的判断
  表达式3:更新循环变量
  执行流程:
     1.先执行表达式1
 2.判断表达式2的结果(boolean类型)
 3.如果2条件为真,则执行循环体,否则退出
 4.执行完循环体后,再执行表达式3
 5.判断表达式2的结果
  ex: for(var i=1;i<=10;i++){
      console.log(i);
   }

13.for的特殊用法

1.for(表达式1;表达式2;表达式3;){}

1.省略表达式
  三个表达式可以任意省略,分号不能省
  但一定在循环的内部或外部将表达式补充完整
2.表达式1和表达式3 允许写多个表达式,用逗号隔开表达式

14.循环嵌套

1.循环嵌套

在一个循环的内部,又出现一个循环
  for(var i=1;i<100;i++){ //外层循环
     for(var j=1;j<=10;j++){
    //内层循环
 }
  }
 外层循环走一次,内层循环走一轮

15.数组

1.什么是数组

在一个变量中保存多个数据。
数组是按照线型顺序来排列的-线型结构
数组中:除了第一个元素外,每个元素都有一个直接的"前驱元素"。
数组中:除了最后一个元素外,每个元素都有一个会直接的"后继元素"。

2.声明数组

1.语法
  1.var 数组名=[];
    var names=[];
  2.var 数组名=[元素1,元素2,元素3...];
    var names=["孙悟空","猪八戒","沙和尚"];
  3.var 数组名=new Array();
    var names=new Array();
  4.var 数组名=new Array(元素1,元素2...);
    var names=new Array("林黛玉","贾宝玉","王熙凤");

3.数组的使用

1.取值和赋值操作
  取值:
   数组名[下标]
   var newArr=["tom","lilei"];
   newArr[0]
  赋值:
    数组名[下标]=值;
     newArr[2]="韩梅梅";
2.获取数组的长度
  数组长度:数组中元素的个数
  属性:length
  语法:数组名.length
3.配合循环,遍历数组中的每个元素
  for(var i=0;i<names.length;i++){
      i:表示数组中每个元素的下标
      names[i]:每个元素
  }
  
  length表示数组中即将要插入的元素的下标
  var names=["tom","lili","lucy"];
      names[names.length]="lilei";

16.关联数组

1.关联数组
  以字符串作为元素的下标的数组,就是关联数组。
  以数字作为下标的数组,就是索引数组。
$array=["name"=>"tom"]
2.js中的关联数组
  var array=[];
  array["字符串下标"]=值;
  注意:
    1.关联数组中,字符串下标的内容是不记录到length中的
2.只能通过 字符串 做下标取值
3.for...in
  遍历出任意数组中的字符串下标 以及 索引下标
  语法:for(var 变量 in 数组名){
       //变量:字符串下标 或 索引下标
  }

17.冒泡排序

1.什么是冒泡
  排序算法之一,将一组数据进行排序,小的数字往前排,大的数字往后排。
  两两比较,小的靠前。
  var arr=[9,23,6,78,45]; 5个数  比4轮
  第一轮:比较了4次
  第二轮:比较了3次
  第三轮:比较了2次
  第四轮:比较了1次
  1.n个数字,则比较n-1轮
    for(var i=1;i<arr.length;i++)
  2.轮数增加,比较的次数较少
    for(var j=0;j<arr.length-i;j++)
          第一轮  5     -1=4次
      第二轮  5     -2=3次
              第三轮  5     -3=2次
      第四轮  5     -4=1次
      两两比较 小的靠前
      if(arr[j]>arr[j+1]){

         arr[j]^=arr[j+1];
         arr[j+1]^=arr[j];
         arr[j]^=arr[j+1];
}

18.数组的常用方法

1.toString();

作用:将数组转换为字符串,并返回转换后的结果。
语法: var str=数组对象.toString();

2.join()

作用:将数组的元素通过指定的字符连接到一起,并返回连接后字符串
语法:var str=数组对象.join("字符");

3.concat()

作用:拼接两个或更多的数组,并返回拼接后的结果
语法:var res=数组对象.concat(数组1,数组2,...);

19.数组的函数

1.slice()

作用:截取子数组,从指定的数组中,截取几个连续的元素组成一个新的数组
语法:var arr=数组名.slice(start,[end]);
      start:从哪个下标位置处开始截取,取值为正,从前向后算; 
      取值为负,从后向前算          0      1      2
   var arr=["中国","美国","俄罗斯"];
             -3      -2    -1 
      end:指定结束位置处的下标(不包含自己),该参数可以省略,
      如果省略的话,就是从strat开始一直截取到尾。

2.splice()

作用:允许从指定数组中,删除一部分元素,同时再添加一部分元素
语法:arr.splice(start,count,e1,e2...);
      start:指定添加或删除元素的起始下标
  count:指定要删除元素的个数,取值为0表示不删除
  e1:要增加的新元素,可以多个
  返回值:返回一个由删除元素所组成的数组

3.reverse()

作用:将一个数组反转
语法:数组名.reverse();
注意:该函数会改变当前数组的内容

4.sort()

作用:排序,默认情况下按照数组元素们的Unicode码进行升序排序。
语法:数组名.sort();
特殊:
   允许自定义排序函数,从而实现对数字的升序或降序的排序
   ex:
     var arr=[12,6,4,115,78];
 //排序函数(升序)
 function sortAsc(a,b){
    return a-b;
 }
 arr.sort(sortAsc);
  原理:
    1.指定排序行数sortAsc,定义两个参数a和b,表示数组中相邻的两个数字
2.将排序函数指定给数组sort()函数,数组会自动传递数据到sortAsc()中,
  如果sortAsc()的返回值>0,则交互两个数字的位置,否则不变。
  使用函数完成升序排序:
     arr.sort(
       function(a,b){  //匿名函数
         return a-b;
       }
    )

20.进出栈操作

JS是按照标准的“栈式操作”来访问数组
所有的“栈式操作”的特点就是“后进先出”
1.push()

入栈,在栈顶添加指定的元素,并返回新数组的长度
 var arr=[10,20,30];
 //向栈顶增加新的数据40
 var len=arr.push(40); //4

2.pop()

出栈,删除(删除栈顶数据)并返回删除元素
注意:改变原来数组

3.shift()

  删除数组头部(第一个)的元素并返回删除元素
语法:数组名.shift();

4.unshift()

在数组的头部(第一个)元素的位置处,增加元素,返回的是数组的长度。
语法:数组名.unshift(增加的数据);

3.二维数组
1.什么是二维数组

在一个数组中的元素又是一个数组,也可以称为:数组的数组。

2.二维数组的使用

var names=[
    ["孙悟空","猪八戒","沙和尚"],
["大乔","小乔","曹操"],
["林黛玉","贾宝玉","薛宝钗"]
];
 //打印输出“小乔”
   console.log(names[1][1]);

相关文章

  • js知识点总结系列(二)

    11.递归调用 递归:在一个函数的内部再一次调用自己 12.分支结构 1.if结构 2.if...else...结...

  • 无标题文章

    综和复习本月知识点总结: 一:微信小程序 二:vue复习 三:js复习 四:新知识点 一:微信小程序知识点总结 开...

  • React.js 入门学习笔记

    React.js 知识点总结: 之前已大量使用过 Vue.js 所以对于学习 React.js 有所帮助,看起来还...

  • 后端知识点总结——NODE.JS基础

    后端知识点总结——NODE.JS基础 1.Node.js JSP = HTML+JAVA 功能强大可靠,适合大型企...

  • js基础知识点总结系列(一)

    1.javascript概述(了解) 2.js的发展史 3.js组成部分 4.js的特点 2.JavaScript...

  • js常用知识点总结-String对象

    js常用知识点总结-String对象 使用String对象: String对象属性: 属性描述constructo...

  • 与闭包相关的问题

    感觉js闭包可以引发一系列面试中比较常考的问题,打算单独写一篇文章加以总结 如果之前对作用域的相关知识点了解的话,...

  • js常用知识点总结-Number对象

    js常用知识点总结-Number对象 使用Number对象: 对象属性: 属性描述constructor返回对创建...

  • 总结部分知识点 _ 杂(html, css, js)

    总结部分知识点 _ 杂(html, css, js) 搭载项目环境 Html核心文件index.html CSS:...

  • JS 一句话系列

    初衷 JS细节知识点比较多,容易忘记。所以有这个系列,一句话概括知识点,方便回忆。 记录 Decorator常见用...

网友评论

    本文标题:js知识点总结系列(二)

    本文链接:https://www.haomeiwen.com/subject/jxygmctx.html