5-12、JS函数深入讲解

对象:JS中的所有事物都是对象:字符串、数值、数组、函数…

尽量少的使用全局变量

var family = {
	name : "xy",
	age : 14,
	xxx : function(){
		console.log("对象中的函数");	
	}
}

生成一个新对象的方法:

var a1 = new Object();	//不常用
var a2 = {};		//常用

给对象赋值:

a1.name = "xxx";\
a1['name'] = "aaa";

也可以通过上面的方式新增对象的属性。

删除对象的属性:

delete a1.name;

判断对象中是否有某属性:

//  有返回true  没有返回false
console.log("name" in a1);

遍历对象:
for (var p in xy){ }
更多用法查询for…in…的用法。

var xy = {
      name: "a1",
      age : 13,
      oph : "110"
    }
    for(var p in xy){
      console.log(p);
      console.log(xy[p]);
    }
什么是函数:

一次定义(封装),四处调用(使用)。

 	function add(num1,num2){}   	//命名函数
    window.onload = function(){}	//匿名函数

在调用函数的时候,发生了什么?
调用的时候,在调用下建立一个临时函数,执行完之后销毁回收。

使用函数的好处:
统一修改,增加函数的可读性。

函数的本质

可以给函数添加属性,有时候会用到。

function add(){}
add.name = "xy";

作为数据使用:
把函数赋值给一个变量时,应该把函数名舍弃,使用变量名访问。

var add = function(){};

作为参数使用:

setTimeout(
	function(){
	console.log(1);
},1000)

加不加括号的区别:

⭐⭐⭐⭐⭐
function add(){}
console.log(add);	//不加括号就把函数的本体传进去
console.log(add());	//加括号就是把函数执行了

	setTimeout(fn,1000);
    function fn(){
      console.log("1");
    }

作为返回值输出的例子:
在这里插入图片描述

三种定义的方式

调用函数之前一定要先定义,这里的先不是定义先,而是在js解析器里的先。

function xy(){};			//function声明
var xy = function(){}		//var赋值表达式
var add = new Function('num1','num1','return num1+num2');	//构造函数

三种定义方式的区别:
预解析上的区别:
第一种可以上边调用下边定义。

console.log(fn);
function fn(){return 1;}

第二种不可以,因为预解析,详情看前一章。

递归调用:

在这里插入图片描述

方法的调用

直接调用
间接调用

函数的参数

形参、实参

实参比形参少的时候

function add(num1,num2){}	//形参两个
add(1);		///实参一个

按照顺序来填入,num2为空,可以进行判断给出默认。

	function pow(num1,num2){
      if(!num2) num2=2; 	//一、如果没有传入值,那么num为2
      num2 = num2 || 2;		//二、对错判断
      return Math.pow(num1,num2);
    }

实参比形参多的时候
⭐⭐⭐传入不确定个数参数时候,怎么定义函数:

// arguments 的使用方法
	function add(){
      if(arguments.length == 0) return;
      var sum = 0;
      for(var i =0;i<arguments.length;i++){
        sum += arguments[i];
      }
      return sum;
    }
    add(1,2,3,4,5,6);

arguments会把传递进来的所有参数编写进数组里。
每个函数中都有且独立,是一个类数组对象。
尽量不要再函数里对arguments进行直接修改删除。

arguments.callee指代函数本身
在递归的时候,可以使用这个,比较常用,最常用,但是在严格模式中会出问题。

什么可以做参数
  • 什么都不传
  • 数字
  • 字符串
  • 布尔值
  • null
  • 数组
  • 对象
return

两个作用:
函数的结束,放在函数的最后。
将值返回。

拓展:continue(结束本次循环)和break(结束循环)

什么可以作为返回值
  • 什么都不返回
  • 数字
  • 字符串
  • 布尔值
  • null
  • 数组
  • 对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值