20200828_陈宇_

日志

学习总结:

​ 今天学习了函数中的重载、参数按值传递、作用域和作用链域、闭包、对象、数组。

一、重载(overload):

1、什么是重载: 相同函数名,不同参数列表的多个函数,在调用时,根据传入参数的不同,自动选择匹配的函数执行 。

2、为什么使用重载: 减少API的数量,减轻调用者的负担 。

3、什么时候使用重载: 只要一项任务,需要根据不同的参数,执行不同的操作时,就需要使用重载 。

4、重载问题: JS语法不支持重载,JS中不允许多个同名函数同时存在 。

5、解决重载问题: 每一个函数内,都有一个arguments对象接住所有传入函数的参数值,根据arguments的元素内容或元素个数,判断执行不同的操作 。

6、arguments: 函数调用时,自动创建的,自动接收所有传入函数的参数值。arguments其实是一个类数组对象 。

二、参数按值传递:

1、原始类型按值传递:

var a=1;
var b=a;
b=2;
console.log(a,b) //1 2

2、引用类型的传递:

​ var obj1={
​ name:"hh",
​ sex:"女",
​ }
​ var obj2=obj1;
​ obj2.name="aaaa";
​ console.log(obj1.name)//aaaa

三、作用域和作用链域:

1、作用域: 变量的可作用范围,其实是一个对象 。

​ 全局作用域对象: 全局作用域对象(window),保存全局变量 。优点:可反复使用;缺点:缺点:随处可用,容易造成全局污染,我们建议尽量少用全局变量。

​ 函数作用域对象: 函数作用域对象(AO),保存局部变量 。

包含:参数变量、函数内var声明的变量。

优点:仅函数内可用,不会被污染。缺点:不可重用。

案例:

var name="one";
function test(){
var name="two";
function test1(){
var name ="three";
console.log(name);//three
}
function test2(){
console.log(name);//two
}
test1();
test2();
}
test();

2、函数的生命周期:

开始执行程序前;定义函数时;调用函数时;调用后。

四、闭包:

1、什么是闭包: 即重用变量,又保护变量不被污染的机制 。

2、为什么使用闭包:全局变量:优点:可重用;

​ 局部变量:优点:不会被污染;

3、使用闭包:

var p=(function(){
var q;
return function () {
return q="哈哈哈技术大咖";}
})()
a=p()
console.log(a)//哈哈哈技术大咖

4、闭包如何形成:

外层函数调用后,外层函数的作用域对象(AO),无法释放,被内层函数对象的scope引用着 。

缺点:1. 比普通函数占用更多内存,多的是外层函数的作用域对象(AO)始终存在。

  1. 容易造成内存泄漏。

5、解决如何释放闭包:show[0]=null

6、理解闭包的流程:

  1. 找受保护的的变量,确定外层函数调用后,受保护变量的最终值。
  2. 找操作受保护的变量的内层函数对象。

注意:同一次外层函数调用,返回的内层函数对象,共用同一个受保护的变量。

五、对象:

1、什么是对象:

对象是一组属性(property)和方法(method)的集合,对象属于引用类型数据 。

2、JS对象分类:
A、内置对象:

​ 什么是内置对象: ES标准中规定的,浏览器厂商已经实现的对象,即JS官方提供的对象 。

API:Math、Date、Number、Boolean、Error、Function

B、宿主对象: 由ECMAScript实现的宿主环境提供的对象,可以理解为 “ 浏览器提供的对象 ”。所有的BOM和DOM都是宿主对象 。

C、自定义对象: 自定义对象就是自己创建的对象(对象字面量/内置构造函数/自定义构造函数) 。

D、访问对象中的属性

E、遍历对象中的属性

F、判断对象中是否含有某个属性

G、全局函数

六、数组:

1、什么是数组:

    数组是由多个元素组成的集合,每个元素就是一个数据,而数组元素是保存在数组中的一个数据 。

数组是引用类型,按值传递。

2、创建数组:

A、创建空数组:

​ 数组直接量:var arr=[];

​ 使用内置构造函数:var arr=new Array();

B、创建数组同时初始化数组元素:

​ 数组直接量:var arr=[值1,值2,....];

​ 使用内置构造函数:var arr=new Array(值1,值2,....);

C、创建含有n个空元素的数组:

​ var arr =new Array(n)

​ 例:var arr= new Array(3);

​ arr[0]='"name";

​ arr[1]="sex";

​ arr[2]="age";

3、数组元素的访问:数组[下标]

学习心得:

​ 今天学的东西很多,大部分知识在上课的时候都听懂了,但是在写练习的时候不看老师写的又不会写,先模仿老师的代码,然后加强记忆,相信不久就能熟练运用,加油。

评论