欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS前端开发堆和栈、ES5新增属性、字符串概念

程序员文章站 2022-03-07 21:44:20
一、堆和栈基本数据类型和引用数据类型的区别;01、基本数据类型之间的赋值关系;按值传递02、引用数据类型之间的赋值关系;按引用传递(按地址传递) 运行程序; 1,准备运行程序要用的空间(一旦分配好以后,内存大小没法改变了) 2,开始运行程序 【引用】数据类型 数组,数组的变量存储的是数组的地址。栈的特点;先进后出,后进先出。栈:当定义一个变量的时候,计算机就在内存中开辟一块存储空间存放这个变量,我们把这个空间叫做栈栈的特点:先进后出(后进先出)栈中存...

一、堆和栈

基本数据类型和引用数据类型的区别;

01、基本数据类型之间的赋值关系;按值传递
02、引用数据类型之间的赋值关系;按引用传递(按地址传递)
  运行程序;				
 1,准备运行程序要用的空间(一旦分配好以后,内存大小没法改变了)
  2,开始运行程序					

 【引用】数据类型			
  数组,数组的变量存储的是数组的地址。 
栈的特点;先进后出,后进先出。
栈:当定义一个变量的时候,计算机就在内存中开辟一块存储空间存放这个变量,我们把这个空间叫做栈
栈的特点:先进后出(后进先出)
栈中存放的是基本类型的数据。
如果一个变量是引用类型,栈中存入的是引用类型数据所在堆中的地址
堆:堆中存入很多数据,一般存放的是对像(引用)类型的数据 

冒泡排序
第一轮;五次
9,8,7,6,5,4
8,9,7,6,5,4
8,7,9,6,5,4
8,7,6,9,5,4
8,7,6,5,9,4
8,7,6,5,4,9

第二轮;4次
8,7,6,5,4
7,8,6,5,4
7,6,8,5,4
7,6,5,8,4
7,6,5,4,8

第三轮;3次
7,6,5,4
6,7,5,4
6,5,7,4
6,5,4,7

第四轮;二次
6,5,4
5,6,4
5,4,6

第五轮;一次
5,4
4,5

分析;
比较的轮数= 数组长度- 1
每一轮比较的数= 数组的长度 - 当前的轮数

例子;
  var arr = [4,7,2,1,3];//
     function maoPoSort(arr){
        var temp = 0;
    for (var i = 0; i < arr.length-1; i++) {//轮		
         for(var j = 0; j < arr.length-1-i; j++){  	                           //      每轮多少次 4 3 2 1									
        //第一个和第二个,第二个和第三,
  //如果前一个大于后一个,交换
  if(arr[j] < arr[j+1]){					
        temp = arr[j];				
    arr[j] = arr[j+1];				
            arr[j+1] = temp;			
                   }					
               }						
           }						
           return arr;				
       }							
       console.log(maoPoSort(arr)); 

选择排序;
选择排序(打擂台法)
规矩;选出一个位置,这个位置的数,和后面所有的数进行比 较,如果比较出大小就交换两个数的位置
每一轮都能选出一个最小的数,放在正确的位置上;
第一轮;
9,8,7,6,5,4
8,9,7,6,5,4
7,9,8,6,5,4
6,9,8,7,5,4
5,9,8,7,6,4
4,9,8,7,6,5
第二轮
9,8,7,6,5
8,9,7,6,5
7,9,8,6,5
6,9,8,7,5
5,9,8,7,6
第三轮
9,8,7,6
8,9,7,6
7,9,8,6
6,9,8,7
第四轮
9,8,7
8,9,7
7,9,8
第五轮
9,8
8,9
分析;
比较的轮数= 数组长度- 1
每一轮比较的数= 数组的长度 - 当前的轮数

例子; 
    var arr = [9,8,7,6,5,4];
         //用擂台的下标						
 for(var i = 0; i < arr.length -1 ; i++){
   //被比较的数的下标
   for(var j = i+1 ; j < arr.length ; j++){
                 if(arr [i] > arr[j]){
                     var tmp = arr[i];
                     arr[i] = arr [j];
                     arr[j] = tmp;
                 }
             }
             
         }
         alert(arr);

sort按数字排序
例子;
var arr = [1144,33,6,12,6,5,8];				
      var newArr = arr.sort(function(a,b){	
          //a-b从小到大						
          return b-a;						
      });							
  	console.log(newArr);//[1144, 33, 12, 8, 6, 6, 5] (7) 
      console.log(arr);//原数组发生了改变//[1144, 33, 12, 8, 6, 6, 5] (7) 

二、回调函数

//回调函数的处理
//回调函数:一个函数a的参数b也是一个函数,这个b函数就是a函数的回调函数、

例子;
function fn(box){
            /*var box = function(){
                console.log(1)
            }*/
            var num1 = 3;
            var num2 = 5;
            box(num1,num2);
        }
        fn(function(a,b){
                console.log(a + b);
        }); 

严格模式;
严格模式;写在哪个作用域下,在哪个作用域下生效;
“use strict”
[注意]尽量不要严格模式写在全局。

 用了严格模式,会有什么变量?
                    1、全局变量声明时,必须写var
                    2、函数重名属性
                    3、arguments对象不允许被动态改变
                    4、新增保留字:implements , interface ,let ,package , protected , public ,static , yield,


            严格模式的目的;
                1、消除javaScript语法的一些不合理,不严谨之处,减少一些怪异行为,
                2、消除代码运行的一些不安全之处,保证代码运行的安全。
                3、提高编译器效率,增加运行速度;
                4、为未来新的javaScript做好铺垫; 

三、ES5新增属性

indexOf( );
        格局;数组.index(item , start);				
        参数;item 任意的数据						
       start 下标,可以不传入,默认为0;				
 功能;在数组中查找第一次出现item元素下标,从start开始去查找;
           返回值;-1 没有查找到						
                            >=0 查找到的元素的下标;
例子;
var arr = [10,12,14,16,12,18];				
             var index = arr.indexOf(12,2);	
             alert(index); //4 
forEach;
       数组遍历					
              for循环				
              for...in			
              forEach (ECMA5新增)	

    var arr = [10,20,30,40,50];					
        arr.forEach(function(item, index ,arr){	
                    item 当前遍历到的元素				
                    index 当前遍历到元素下标			
                    arr数组本身						
document.write(item + "," + index + "," + arr+"<br/>")
        }) 
map  映射
var arr = [10,20,30,40,50];						
var newArr =arr.map(function(item, index ,arr){	
                  //遍历要做的事情  映射关系			
                  return item * 1.3;				
              });									
              alert(newArr);//13,26,39,52,65		
              alert(arr);//10,20,30,40,50] 
filter()过滤
 var arr = [10,20,30,40,50];							
 var newArr =arr.filter(function(item, index ,arr){	
                //过滤条件							
                return item > 20;					
             })									
             alert(newArr);//30,40,50				
             alert(arr);//10,20,30,40,50 
some()某些
	【注】在数组中查找是否符合条件的元素,有返回true,没有返回false。
短路查操作:只要找到符合条件的元素,后面的循环就停止了。
例子
 var arr = [10,20,30,40,50];							
 var newArr =arr.some(function(item, index ,arr){
     alert(item);// 只要找到符合条件的元素,后面的循环就停止了。【有这个 alert(item);只是运算过程,如果只需要结果,可以不要这个】												
       return item > 20;								
      })												
             alert(newArr);//true						
             alert(arr);//10,20,30,40,50 
every()每一个;
	【注】在数组中查找是否有符合条件的元素,有返回true,没有返回false。
短路查操作:只要找不到符合条件的元素,后面的循环就停止了。
     var arr = [10,20,30,40,50];					
 var newArr =arr.every(function(item, index ,arr){	
          alert(item);							
                return item <100;					
             });									
             alert(newArr);//true					
             alert(arr); 
reduce()归并
 var arr = [10,20,30,40,50];
 var res =arr.reduce(function(prev,next, index ,arr){
          prev 第一次是 下标为0的元素						
                  第二次开始 上一次遍历reduce 的值			
                    next 从下标1开始,当前遍历到的元素		
                     arr数组本身					 
 alert(prev+ "," + next);/过程10,20/ 30,30/ 60,40/   100,50/ 												
                return prev + next;					
             });
             alert(res);//150结果 
 isArray ()精确的检测一个值是否是数组;

var arr = [3,4,5]
        var obj = {};
精确的检测一个值是否是数组;
console.log(Array.isArray(arr));//true
console.log(Array.isArray(obj));//false 

四、字符串

字符串概念;所有带单引号或者双引号的都叫字符串;
字符串声明;
1、通过new运算去声明字符串
2、省略new声明字符串
3、字符串常量赋值

【字符串下标】字符串,charAt(下标)
1、 charCodeAt()
  格式;字符串.  charCodeAt(下标)
功能;访问字符串中的对应下标字符的ASCII码值 
2、 String.fromCharCode()
        格式; String.fromCharCode( 码值1,码值2...);
(String字符串对象)    功能;将传入的ASCII码值转成对应的字符
         返回值;组成的字符串
例子
var str = "hello";
      alert(str.charCodeAt(3));//101

  var str = String.fromCharCode(97,98,99,100);
            alert(str);//abcd 
 str.substr(  );   字符串截取
 * str.substr(index);//从index位置开始向后截取所有字符
* str.substr(index,length);//从index位置开始截取length个字符
例子、
  var str = new String("what is your name,周");
  console.log(str.charAt(1));//h  如下标不存在,返回空 
replace();
   格式;supStr. replace(oldStr,newStr );		
      功能;用newStr将oldStr替换,生成新的字符串;
       参数;								
        1.第一个参数传入的是字符串只能替换一次			
        2.第一个参数   正则表达式					
                /XXX/ig   i忽略大小写, g全局匹配 		
                   返回值;将换成的字符串				
例子
var str = "how are you";
          var res=str.replace("are","old are");
          alert(res);//how old are you
          alert(str); 
【2】  split( )  字符串分割
格式;字符串.split(分割符,length);				
参数;										
   第一个参数,用这个分割符对原字符串进行分割;		
   第二个参数,控制返回的数组的元素格式,一般情况下不用	
功能;										
    用分割符对原字符串,进行分割,将分割完毕以后的子串,放在数组中返回								
    返回值;数组 

[注意]
1,相邻的两个分割符,会产生空字符串 “”
2.分割符是空字符串"",直接将每一个字符,单独分割成子串,放在数组中返回

例子1
var str = "how are you";
 var arr = str.split("");    // ("")里面没有空格
 alert(arr);//h,o,w, ,a,r,e, ,y,o,u 
例子2
var str = "how are you";
var arr = str.split(" ",2);    
      alert(arr);//how,are 

【3】 toLocaleUpperCase 转成大写
toLocaleLowerCase 转成全小写
例子

var str = "HelloWORLD";
    alert(str.toLocaleLowerCase());//转成全小写
    alert(str.toLocaleUpperCase())//转成全大写

 str.trim();//去掉字符串左右两边空格。ie8下不支持
* str.trimLeft();//去掉字符串左边的空格。ie不支持
 * str.trimRight();//去掉字符串右边的空格。ie不支 

五、Math系列

Math. random()//返回0-1之间的随机数
Math,max(num1,num2)//返回较大的数
Math.min(num1,mum2)/返回较小的数
Math.abs(num)/绝对值
Math. round()四舍五入(成整数,只看小数点后一位)
Math.ceil(19.3)//向上取整
Math.floor(11,8)/向下取整
Math. pow(x,y)//x的y次方
Math.sqrt(num)//开平方

传入的参数是:弧度
Math.sin()正弦
Math.cos()余弦
Math.PI=180弧度
1弧度=Math.PI/180

本文地址:https://blog.csdn.net/Li8L9xF/article/details/107882220