JavaScript函数,函数参数以及调用

函数

函数,即方法.函数也是对象

函数的定义

  1. 定义方式有三种

    1. 函数声明语句

      function 函数名([形参]){
      
      }
      //调用:函数名([实参])
      
      1. 函数定义表达式
      var 变量名/函数名 =function([形参]){
      
      }
      //调用:变量名([实参])/函数名([实参]);
      
      1. Function构造函数
      var 函数名=new function('参数1','参数2','函数的主体内容');
      //调用:函数名([实参]);
      //构造函数的最后一个参数是函数体
      
      1. 注意

        1. js中的函数没有重写,同名的函数,会被后面的函数覆盖
        2. js中允许有不定数目的参数,后面接受arguments对象
      2. 函数名的提升

        1. JavaScript引擎将函数名视为同变量名,所以采用function
        2. 命令声明函数时,整个函数会像变量声明一样,被提升到代码头部
        3. 但是,如果采用赋值语句定义函数,JavaScript就会报错
    		fn4();
    		/*函数名的提升*/
    		function fn4() {
    			console.log("函数名的提升。。。。");
    		}
    		
    		fn5();
    		var fn5 = function(){
    			console.log("函数名的提升...");
    		}
    

函数的参数,调用和return

参数
	1. 函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结构,这种外部数据叫做参数,定义时的参数称为形参,调用时的参数称为实参.
	2. 参数可以省略,那么对于形参为 undefined
	3. 若函数形参同名(一般不会这么做),在使用时以最后一个值为准
	4. 可以给参数默认值,当参数为特殊值时,可以赋予默认值
	5. 参数为值传递,传递副本;引用传递是传递地址,操作的是同一个对象
函数的调用
  1. 常用调用方法: 函数名([实参]);

    1. 存在返回值可以变量接受,若接受无返回值函数则为undefined
    
    function fn8(){
    	console.log(this);//Window对象
    }
    fn8();
    
    1. 函数调用模式
    var fn9 = function() {
    	console.log(this); // Window对象
    	return 1;
    }
    var f = fn9();
    console.log(f);
    
    1. 方法调用模式
    var obj = {
    	uname:"zhangsan",
    	uage:18,
    	cats:["喵喵","猫猫"],
    	sayHello:function() {
    		console.log(this); // obj对象
    		console.log("你好呀~");
    	}
    };
    console.log(obj.sayHello);
    obj.sayHello();
    
    1. call()和apply()
    var obj2 = {};
    function fn10(x,y) {
    	console.log(x+y);
    	console.log(this); 
    }
    fn10(1,2); //  Window对象
    
    fn10.call(); //  Window对象
    fn10.call(obj2); // obj2
    fn10.call(obj2,10,20); // obj2
    
    fn10.apply(obj2,[100,200]); // obj2
    
    1. 注意:谁调用函数,this就指向谁
匿名函数立即调用
1. 匿名函数:function([参数]){};
2. 调用(function({形参}){})([实参]);
3. 在函数只被使用一次的情况下可以使用这种方法,简便省事
(function(a,b) {
	console.log(a-b);
})(10,2);
return语句
1. 函数的执行可能会有返回值,需要使用return语句将结果返回,return语句不是必需的
2. 如果没有的话,该函数就不返回任何值,或者说返回 undefined
3. 作用:在没有返回值的方法中,用来结束方法
4. 有返回值的方法中,一个是用来结束方法,一个是将值带给调用者

argunments对象和函数的方法及属性

  1. arguments对象可以得到函数的实参属性

  2. 函数名.name 得到函数名称

  3. 函数名.length 得到函数的形参数量

  4. 函数名.toString() 得到函数的源码

    <script type="text/javascript">
    		
    		function fn1 (a,b,c) {
    			// arguments对象可以得到函数的实参数量
    			console.log(arguments.length);
    			console.log("函数....");
    			console.log(arguments);
    		}
    		
    		fn1(1,2);
    		
    		console.log(fn1.name);//fn1
    		console.log(fn1.length);//2
    		console.log(fn1.toString());//上方方法源码
    		
    </script>
    

函数的作用域

1. 函数作用域:全局(global variable)和局部(local variable)
  	1. 全局变量与局部变量同名问题
  	2. 在函数中定义变量时,若没有加var关键字,使用过之后自动变为全局变量
  	3. 变量作用域提升
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值