函数_对象_数组

37 阅读4分钟

递归函数

什么是递归

在编程中,递归就是一个自己调用自己的手段
递归函数:在一个函数内部,调用了自己,循环往复 自己作用域没有(fun内部),去上一层查找(fn内部)

function fn() {
    fn()
}
fn()                                        

和循环类似

需要有初始化,自增,执行代码,条件判断
如果没有就会是一个没有尽头的递归函数,通常称这种递归为:死递归

递归案例

// 求 1-5 的和
// 1. 先写结束条件(为了避免出现死递归)
function add(n) {
    if(n === 5) {
        return 5
    } else {
        return n + add(n + 1)     // 2. 写不满足条件时的递归操作
    }
} 
add(1)

简单了解对象

什么是对象

对象是一个复杂数据类型,也叫做引用数据类型
简单来讲就是存储了一些基本数据类型的集合

var obj = {
    num: 100,
    str: "hello"
}

这里的 {} 和函数中的 {} 不一样,函数内部书写代码,对象里面是书写数据的
对象就是一个键值对的集合

键值对
对象 obj 中,num是键,100是值
其实就是类似于准备了一个房子,把我们想要的数据放进去,然后把房子的地址给到变量名,当我们需要某一个数据的时候,就可以根据变量名里面存储的地址找到对应的房子,然后去房子里面找到对应的数据

创建对象

  1. 字面量方式创建对象
    var obj = {键值对, 键值对}
  2. 内置构造函数创建
    var obj = new Object()

对象对于 键(key) 的要求

推荐使用符合变量名命名规则和规范的名字
可以使用纯数字当作键名 --- 这种情况下该属性会排列在最前面
可以使用任何特殊符号 --- 使用特殊符号的时候,在书写时需要被引号包裹

对象数据类型的操作(增删改查)两种语法

  1. 点语法
var obj = {}
obj.name = "YYJ"         // 增
obj.name = "YYJ0126"     // 改
console.log(obj.name)    // 查
delete obj.name          // 删
  1. 中括号语法(数组语法)
var obj = {}
obj["name"] = "YYJ"       // 增
obj["name"] = "YYJ0126"   // 改
console.log(obj["name"]   // 查
delete obj["name"]        // 删

两者的差异

符合变量命名规范与规则的情况,两者并无差异
操作不符合变量命名规范和规则的名称时,比如纯数字或者带有特殊符号的,就只能用中括号语法
设计变量相关的时候,只能使用中括号语法

for in 循环遍历对象

const obj = {
    num: 100,
    str: "hello"
}
for(let key in obj){
    console.log("我执行了", key, obj[key] 
}

// "我执行了", num, 100
// "我执行了", str, "hello"

数组数据类型

什么是数组 数组字面意思就是存放数字的一个组合,但这么说太过于片面,更完善的说法应该是数组是存放一些数据的集合
简单来说就是我们把数据放到一个盒子中,这个盒子就是数组,注意数字内的数据是有顺序的

var arr = [1, 2, 3, "qwe", true, undefined, null]

创建数组数据类型

  1. 使用字面量的方式创建数组
var arr = []
  1. 内置构造函数创建数组
// 创建一个空数组
var arr = new Array()
// 创建一个有长度的数组   
var arr1 = new Array(10)
// 创建一个有内容的数组
var arr2 = new Array(1, 2, 3) 

数组的 length 属性

length 代表数组内有多少个成员(数据)

var arr = [1, 2, 3]
console.log(arr.length)    // 3

数组的 索引 概念

索引也叫做下标,就是指一个数据在这个数组内排列在第几个位置上
在所有的语言中,索引(下标)都是从 0 开始的

var arr = ["hello", "world"]
console.log(arr[0], arr[1])       // "hello", "world"

for 循环遍历数组

遍历数组就是想办法拿到数组的每一个元素,通常我们可以通过下标获取到元素的某一项,所以我们只需要想办法拿到数组的所有下标即可

var arr = [1, 2, 3]
for(let i = 0; i < arr.length; i++) {
    console.log(arr[i])
}