javaScirpt函数认识与数组的API

4 篇文章 0 订阅
4 篇文章 0 订阅

一、认识函数

函数就是一个工具,函数是实现一个功能的封装,实现某种功能一串代码块。

第一种
函数语法;									
        函数声明;						
             function 函数名(){				
                  函数体(具体要执行的代码);		
                 }						
                【注意】见名思意, 函数名必须体现其功能。

            函数调用;				
               格式;函数名();		

  作用;				
    *使程序变得简洁而清晰	
    *有利于程序维护		
    *可以提高程序开发效率	
   *提高了代码的重要性	
例子:
	 function print(){
	             for(var i = 0 ; i < 10 ; i++){
	                  document.write("hello,嗨"+"<br/>");
	                }
	            }
	            print();
	函数声明后需要调用执行
		print()

第二种方法;赋值式 
/*var fn = function(){
                console.log("赋值方式 声明了一个函数")
            }
            fn();*/
第三种方法;构造函数方式,只要使用new关键字创建对象的函数就叫构造函数。(一般不用)
//Function()第一个字母是大写的,是构造函数         
               /这种方式不建议使用。            
     /*var fn = new Function("console.log('1111')");
        fn();*/

二、函数参数的特点;

return 关键字;

       有参数有返回值的函数;			
          格式;						
        	function 函数名( 形参1,形参2,形参3....){		
                                函数体;					
                                return 表达式; ·			
                            }                      		
	【注意】return后面写什么的表达式,函数调用的结果就是return后面表达式

   [[注意]] 函数运行的时候,如果遇到return关键字,整个函数会终止;

//形参于实参:(了解即可)
1、形参是一个声明并未赋值的变量,只有在实参对应传递的时候才赋值。
2、形参没有实参传递的情况下,这个形参是一个undefined;
3、形参可以多个,多个形参之间用逗号隔开。
4、形参一般来说要与实参一一对应,否则就会出现形参是undefined;

return 的特点
1、必须在函数内使用;
2、结束后面的程序;
3、return 后可以不跟任何值,返回undefined;
4、函数没有设置return ,默认回返undefined;
当一个函数的功能实现需要产生一个结果给函数外部程序使用时
就要使用return;

三、函数的递归;

	递归;				
                满足以下三个特点就是递归;
                    1.函数自己调用自己
                    2.一般情况有参数
                    3.一般情况下有return

【注】递归可以解决循环能做的所有的事情,有一些循环不容易解决的事情,递归也能轻松解决;
    【个人觉得】递归,都可以写出来,但是不知道为什么是对的。

*递归调用就是自己内部调用函数本身执行。
*递归的特点:
*循环。
*形成一个完整的递归,有条件退出程序。如果没有退出程序的条 件,递归会形成死递归

个人粗糙笔记,觉得哪个不好的话.[可以留言

。。

四、函数的作用域

例子:
var b = 8;//这里的变量b叫函数box的全局变量
    function box(){
        var a = 3;//在函数内部用var声明的变量,这种变量把它叫函数box的私有变量,函数的外部不可以访问的,这些私有变量又称函数的局部变量
        alert("函数内部访问的b+"+b)
    }
    box();
    alert("函数外部访问的b+"+b);

总结:
* 全局范围不可以访问函数的局部变量;
* 函数的局部可以访问全局变量;
* 全局变量中的区域叫全局作用域;
* 函数的局部区叫局部作用域;
作用域链:函数内部要访问变量,先在自己的局部作用域下访问,如果局部没有,再往上一级作用域找,如果还没有继续往上,直到window,如果还没有,程序报错。

五、函数和变量提升

浏览器js解析,分两步骤
1,预解析:先找程序中所有以var声明的变量,并且将这些变量以声明不赋值的方式提升到当前作用域的最开头,找完var后再找function声明的函数,并且将这些函数全部提升到作用域的最开头。如果var声明的变量与函数同名,程序优先保留函数。

2,逐行执行
例子:
   /*alert(a);//function a(){alert(3);}
        var a=1;
        alert(a);//1
        function a(){alert(2);}
        alert(a);//1
        var a=3;
        alert(a);//3
        function a(){alert(3);}
        alert(a);//3*/

六、函数和事件

事件:浏览器检测到js的一种行为。
作用:可以让html元素有行为,大大提高网页的交互性。
事件的三要素:事件源,事件,事件处理程序
事件和函数的关系:事件依赖于函数实现

    //函数:是一个功能实现的封装。
    //事件:
   //要完成一件事,必需要触发某个动作。
   //js要对某些html元素进行操作,控制元素实现某些功能,多情况下需要建立在事件基础上。
        
    //如果让一个元素触发某个事件实现一段功能?
    //点击一个按钮弹出“我被点击了”;
    
    //该按钮要存在(元素在js中称为元素对象)

    //获取到元素
    //js中有一个文档对象document
    //通过文档对象,获取页面中以id为box的元素
    //var but = document.getElementById("box");//选择器
    //添加对应事件(触发的动作);
    //console.log(but);
    //所有事件前加on  onmouseover
    //完成事件的功能(函数就是实现一个功能);
    //事件有三要素:事件的对象,事件本身,事件处理程序
例子:
  but.onclick = function(){
 		alert("我被点击了");
   }
 * 鼠标事件 
         * onclick ;点击效果
         * ondblclick;鼠标双击
         * onmouseover;鼠标滑过
         * onmouseout;鼠标划出
         * onmouseenter;鼠标进入
         * onmouseleave;鼠标离开
         * oncontextmenu;鼠标右击菜单
         * onmousewheel;鼠标滚轮
       
* 键盘事件
         * onkeydownn;键盘按下时触发
         * onkeypress;键盘按下按着不放时触发
        * onkeyup;键盘按下抬起时触发

* 表单事件
         * onsubmit
* 文本框事件
         * onblur;失去焦点
       * onchange;当文本框 的内容发生改变并且失去焦点时触发
       * oninput;当文本框 的内容发生改变并且失去焦点时触发
         * onfocus;获取焦点
* 窗口事件
         *   onload
         *   onresize;窗口的大小发生改变时触发
        *   onscroll;滚动

事件处理 程序:
1、处理元素样式

例:oDiv.style.boderColor = “red”
	oDiv.style.cssText = “用字符串的方式写样式”
2,处理元素的内容
		oDiv.innerHTML = "修改内容";【并且可以解析标签】
		oDiv.innerHTML;获取内容
		
		oDiv.innerText:获取内容【 "修改内容";【并且  **不解析标签】
		oDiv.outerHTML:获取时会包含当前自己本身的标签,赋值时会覆盖自身标签以及它的子标签;
		oDiv.outerText;同上;
		表单元素:
			input.value = "修改内容";
			input.value;获取内容
	3,处理元素的属性
		oDiv.id = "修改"
		oDiv.id;获取
		oDiv.class:不用这个
		oDiv.className
		oDiv.style

七、数组的创建

两种方式:

字面量方式:
		var arr = [ ]; 定义了一个空a数组arr
		var arr = [1,2,3,4,32,23];定义了一个有6个具体元素的数组
构造函数的简单介绍。与对象
 	new Array( );【数组对象】
	new Object( );	【对象】
	new Date( );	【日期对象】
	new String( );	【字符串对象】
	new Number( );	
	new Function( );	【函数对象】
		Math【数字对象】
		RegExp 【正则对象

构造函数方式
    //var brr = new Array(3,2,4);//创建了有3个元素的数组
//区别:
     //var arr = [5];//object 创建一个元素为5的数组
     //var brr = new Array(5);//创建了一个有5个空元素的数组,只要小括号中的值是一个数字,这个数字表示长度        
     //var brr = new Array("5");//创建了一个元素为字符串5的数组											
  //var brr = new Array(5,2);//创建了两个元素的数组												

//数组的length属性:
//数组对象下有一个length属性,这个属性记录了数组的元素个数,length是数组的长度.

//数组的索引(下标);
var arr = [54,34,65,43,76];//索引为 0 1 2 3 4

七–01、 for in遍历数组(for…in只能遍历对象,数组也是对象)(不建议使用)

特点:
没有循环条件
自动取出下标
下标类型为string

七–02 、二维数组arr[ [ ],[ ] ];

数组存储数据,数组中的每一个元素。元素可以是任意的数据类型;
【注意】数组中的元素可以是数组,

                二维数组;人为起的

.数组方法操作详解
数组是对像,对像有属性和方法
属性:
length属性:读写数据的长度
方法:

八、数组的API

改变原数组的方法:
push( ) 向数组的尾部添加一个或多个元素 用法:arr.push(21,12,23),返回新数组的长度,原数组改变
  数组的两个方法形成栈结构;						
         push									
                格式;数组,push(参数1,参数2.。。。)
                        功能;给数组的末尾添加元素。	var arr = ["北京" , "上海" , "广州" , "天津"];			
         var res = arr.push( "深圳" , "成都" ,"广西");	
         alert(arr);//北京,上海,广州,天津,深圳,成都,广西	
         alert(res);//7							
pop( ) 删除数组尾部的数据 一次删一个,用法:arr.pop();返回删除的元素,原数组改变
  			pop								
                  格式;数组  pop()			
                 参数;没有参数					
                  返回值;从数组末尾取下一个元素	
var arr = ["北京" , "上海" , "广州" , "天津"];	
            var res = arr .pop();				
            alert(res);// 返回值取末尾 天津		
            alert(arr);//取其它剩下的/北京,上海,广州	
unshift( ) 向数组的头部添加一个或多个元素; 
用法:arr.unshift(23,34,32),返回新数组的长度,原数组改变
  unshift() 			
           格式;数组, unshift( 参数1,参数2.。。 )
           功能;从数组头部插入元素			
           返回值;;插完元素以后的数组的长度			


  var arr = ["唐朝" , "元朝" , "清朝"];		
  var res = arr.unshift( "秦朝" , "隋朝") ;	
   alert(res);//5									
   alert(arr);//"秦朝" , "隋朝","唐朝" , "元朝" , "清朝"
shift( ) 删除数组的第一个元素,返回删除的元素,原数组改变

	shift()						
           格式;数组,shift()		
           参数;没有参数			
           功能;从数组的头部取下一个元素	
           返回值;取下的元素	
	例子;	
var arr = ["唐朝" , "元朝" , "清朝"];		
           var res =arr.shift();			
           alert(res);//"唐朝" 		
           alert(arr);// "元朝" , "清朝"
splice( ):
	1、第一种方式:
arr.splice(start,length) 删除从开始位置 指定length个元素,返回删除的元素,如果不加length,则删除start位置及后面所有的元素。原数组改变
 splice									
     格式;数组,splice(start,length,数据1,据2.。。。)
     参数;						
     start  开始截取的位置						
     length 截取的元素的长度						
      第三个参数开始;在start位置,插入的元素;		
          返回值;截取下来的元素			
              增加				
              删除				
              修改(先删除再修改)
var arr= [10,20,30,40,50,60];							
var res = arr.splice(1, 2 ,"hello","world");//两个参数是截取,从1下标位置开始后2个元素,截取的所有元素形成新的数组返回;
            alert(arr);  //  10,hello,world,40,50,60
            alert(res);  // 20,30
      2、第二种方式     
arr.splice(start,length,num参数) 如果length是0,在start位置处添加num数据,删除0个元素,返回空值,原数组改变
  var arr= [10,20,30,40,50,60];
        var res = arr.splice(2 , 0 ,"hello","world");
            alert(arr);   // 显示 10,20,hello,world,30,40,50,60
            alert(res);//空
		3、第三种方式;
arr.splice(start,length,num参数) 如果length是大于0,在start位置开始删除length个数据,再添加num数据,返回删除的元素,原数组改变

arr.reverse( );将数组倒序排列返回排列后的新数组
       reverse()逆序 【改变原数组】 			
	  var arr= [10,"hello","world",60];	
            arr.reverse()					
            alert(arr); //60,world,hello,10		
 sort()					
        格式;数组,sort();
    var arr= [13 , 11 , 14, 5 , 18 , 27];
        arr.sort();					
        alert(arr);//  11,13,14,18,27,5 按字符串顺序输出
       
 var arr = [1 ,5 ,3 ,4 ,17];				
     arr .sort(function(num1 , num2){		
       //添加函数						
         return num1 > num2;			
            })						
            alert(arr);//1,3,4,5,17		
不改变原数组的方法
arr.slice(start,length);1.截取从start位置到length位置的元素返回截取元素组成的新数组
   slice()				
         格式;数组,slice(start ,end)				
         功能;可以基于当前数组获取指定区域元素,【start ,end ),提取出元素生成新的数组;						
         返回值;生成的新数组,愿数组不会发生任何改变;
例子;	
 var arr = [10,11,12,13,14,15];			
            var newArr = arr.slice(1,4);	
            alert(newArr);// 11,12,13		
            alert(arr);//10,11,12,13,14,15 
例子2;
            var arr = [10,11,12,13,14,15];
            var newArr = arr.slice(1);//一个参数,从这个参数下标位置到最后截取
            alert(newArr);// 11,12,13,14,15
            alert(arr);//10,11,12,13,14,15

2.如果参数只有start,.截取从start位置到数组最后返回截取元素组成的新数组
arr.join(“-“);使用“-”将数组元素连接起来返回一个字符串
 join ()				
        格式;数组, join(将数组转字符串)					
        功能;将数组中的元素,用传入的拼接符,拼接成一个字符串
              返回值;拼接好的字符串	
var arr= [13 , 11 , 14, 5 , 18 , 27];		
            // alert(arr);				
            var str = arr.join("==.++");	
            alert(str);//  				13==.++11==.++14==.++5==.++18==.++27		
            alert(arr);//13,11,14,5,18,27	

arr.concat(brr,crr);将一个或多个数组所有元素拼接到arr后面,返回拼接后的新数组

 concat							
        1.拷贝原数组,生成新的数组			
        2.合并数组;					
         格式;数组, concat ( 数组 , 数据)	
         返回值;合并成的新数组。原数组不会改变。
例子;	
  var arr=[10 , 11 ,12 ,13 ];				
  var arr2=[14, 15 ,16, 17];			
  var a = arr.concat(arr2 , "hello" , "true");	
        alert(a);//把arr+arr2的数全部合并   	   
     // 10,11,12,13,14,15,16,17,hello,true		
           alert(a.length);// 数组10个			
           alert(arr);//10,11,12,13		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值