js基础-函数与对象

84 阅读4分钟

目标:理解封装的意义,能够具备封装函数的能力

什么是函数?为什么需要函数?

  • 函数可以理解为一个 特定的代码块 容器 ,它可以完成特定的需求, 并且可以 重复 使用

函数声明和函数调用

  • 函数默认不会主动执行,必须通过函数名() 调用才会执行.
  • 函数一次声明可以多次调用,每一次函数调用函数体里面的代码会重新执行一次.
  • 我们曾经使用的 alert() , parseInt() 这种名字后面跟小括号的本质都是函数的调用

函数的返回值

  • 我们使用过的返回值引出为什么需要返回值

    • 使用过的返回值

      • let result = prompt('请输入你的年龄?');
      • let result2 = confirm('你确定要删除这条记录么?')
      • let result3 = parseInt('111');
      • // 函数的返回值不是必须的, 比如: alert()

let result4 = alert('弹出一个内容');

- 上面都是我们使用过的函数返回值的情况. 只是这些函数是JS底层内置的.我们直接就可以使用

	- 引出我们自己自定义的函数如何拥有返回值

- 介绍语法

	- function doSomething(){
// doing
return result;

} let jieguo = doSomething();

-   场景介绍

-   调用两次求和函数,得到每一次求和的结果,再比较这两个结果的大小

    -   `function getSum(a, b) {`

`let sum = a + b;` `return sum;`

}

let sum1 = getSum(10, 20); let sum2 = getSum(5, 16);

let max = sum1 > sum2 ? sum1 : sum2; console.log(max);

断点调试

f11进入函数内部

细节补充

两个相同的函数后面的会覆盖前面的函数
在Javascript中 实参的个数和形参的个数可以不一致
	如果形参过多 会自动填上undefined (了解即可)
	如果实参过多 那么多余的实参会被忽略 (函数内部有一个arguments,里面装着所有的实参)
函数一旦碰到return就不会在往下执行了  函数的结束用return

作用域

什么是作用域? 为什么要了解作用域
	准备好一个变量在不同的情况下,取值不同的问题例子作为开场
作用域分类
	全局作用域:
	函数作用域
	块作用域: ?
变量分类
  • 全局变量 在函数外部let 的变量 => 全局变量在任何区域都可以访问和修改

  • 局部变量 在函数内部let 的变量 => 局部变量只能在当前函数内部访问和修改

  • 块级变量 let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问

    • 大坑: 局部变量必须是函数里面声明过(let)的变量 变量访问原则 在能够访问到的情况下 先局部 局部没有在找全局

匿名函数

没有名字的函数, 无法直接使用

使用方式:

  • 将匿名函数赋值给一个变量,并且通过变量名称进行调用 我们将这个称为函数表达式
  • 自执行(匿名函数自执行)
  • 场景介绍: 避免全局变量之间的污染

什么是对象? 为什么需要对象?

对象的基本语法介绍

在Js中, 对象就是一组无序的键值对的集合
说明
	1. 我们把冒号左边的内容称之为属性, 右边称之为值, 成对出现, 故称之为键值对
	2. 当右边的值为函数的时候, 我们更喜欢将这个属性称之为方法
	3. 对象本质上也是一种数据集合, 对比数组来说它里面装的都是不同类型的数据, 并且有对应的属性提示数据的含义
	提问: 上述信息是否可以使用数组存储

对象的基本使用

  • 对象本质上也是数据集合,使用无外乎增删改查
  • 查语法: 对象名.属性
  • 改语法: 对象名.属性 = 新值
  • 增语法: 对象名.新属性名 = 新值
  • 删语法(一嘴带过) delete 对象名.属性名

对象遍历

引入[]语法操作对象属性
	对比点语法的相同点和不同点
		1. 都可以访问对象的属性 对象名.属性名 === 对象名['属性名']
		2. []语法里面的值如果不添加引号 默认会当成变量解析
		3. 没有必要的时候直接使用点语法, 在需要解析变量的时候使用 [] 语法
遍历对象
	for 遍历对象的问题:
		对象没有像数组一样的length属性,所以无法确定长度
		对象里面是无序的键值对, 没有规律. 不像数组里面有规律的下标
	通过for in 语法
		1. for in语法中的 attr 是一个变量, 在循环的过程中依次代表对象的属性名
		2. 由于attr是变量, 所以必须使用 [ ] 语法解析 

内置对象

什么是内置对象? 为什么要学习内置对象
Math
	  Math.PI
	最大值/最小值
	绝对值
	取整
	随机数
		求 0 -n之间的随机数
		求m-n之间的随机数
		练习: 随机抽奖 / 猜数字游戏

简单类型和复杂类型

  • 堆和栈
  • 简单数据类型传参
  • 复杂数据类型传参