Error和Function引用对象

170 阅读3分钟

1.Error

1.1 浏览器自带4种错误类型:

语法错误:SyntaxError - 多半都是哪里的符号写错了

引用错误:ReferenceError - 根本就没有创建过,就去使用了

类型错误:TypeError - 不是你的方法,你却使用了

范围错误:RangeError - 只有一个API:num.toFixed(d);//d的范围只是0-100之间

1.2 错误处理

为什么:只要报错,就会导致后续代码终止(闪退),用户体验感降低
	  如何:try...catch...语句
	    try{
		可能出错的代码
	    }catch(err){
		console.log(err);//提示用户错误的原因是什么
	    }

	    后续代码都可以执行到

	不推荐:try...catch...的执行效率非常的低下,更推荐的是if...else
	想要用if...else去预判用户的错误的前提:丰富的经验(其实我一直在带你们防用户!isNaN、正则)

1.3 抛出自定义错误:

throw new Error("自定义错误信息");

2.Function:函数对象 - 方法

创建:31、声明方式
	function 函数名(形参列表){函数体;return 结果;}
	具有完整的声明提前	

  2、直接量方式
	var 函数名=function(形参列表){函数体;return 结果;}
	也有声明提前,但是赋值留在原地

  3、构造函数方式 - 函数体不是固定的
	var 函数名=new Function("形参1","形参2",...,"函数体");
	函数体是动态拼接时候,注意不能省略""部分

调用:
  函数名();
  元素.onclick();

考点:
  1、***创建:
  2、***作用域:全局(成员哪里都可以使用)、函数(成员只能在函数调用时内部可用)
	     变量的使用规则:优先使用局部的,局部没有找全局,全局没有就报错
  3、***声明提前:在程序正式执行之前,会将var声明的变量和function声明的函数集中提前到当前作用域的顶部,但是赋值留在原地,变量比函数轻
  4、***按值传递:如果传递的是原始类型,互不影响。如果传递的是引用类型,相互影响。
    
  5、***重载:相同的函数,根据传入的实参的不同,会自动选择对应的函数执行
	为什么:减少程序员的负担
	问题:JS不支持重载,JS不允许同时存在多个同名函数,如果存在,最后的一个会覆盖之前的所有函数
	解决:arguments对象 - 只能在函数内部可用,是一个类数组对象:
		作用:接住所有的实参,【以后甚至不用形参都可以了】
		只有3点相同:
			1、支持下标
			2、支持length
			3、支持遍历
	变相实现重载:通过判断arguments的不同,执行不同的操作

  6、***匿名函数:理解概念
	没有名字的函数,没有变量名/函数名引用着,调用完毕后会立马释放 - 一次性函数
	2种:
	1、匿名函数自调:代替全局作用域
		(function(){
			函数体; - 好处:调用完毕会【立刻释放】
		})()

	2、匿名函数回调:某个函数调用时,传入的实参又是一个函数,而且不需要我们调用自动执行
		比如:
		  arr.sort(function(a,b){return a-b})
		  str.replace(reg,function(){})
		***你要认识什么叫做回调函数:
			匿名函数,不是自调,就一定是回调 - 以后会学习箭头函数:简化一切的回调函数