1. 递归函数
- 递归函数对浏览器性能占用挺大建议少用
- 含义:在一个函数内调用了自身就算是递归函数,但是如果没有设置结束条件就会无限循环,递归函数需要设置结束条件 例1:
用递归函数求一个数的阶乘
// 递归函数:在函数内部调用函数,而且需要一个结束条件
function fn(num) {
if(num === 1) { //结束条件
return 1
}
return fn(num - 1) * num //调用函数,将这个返回去
}
var num1 = fn(10)
console.log(num1) //接收函数
例2:
用递归写一个菲波那切数列
// 前两个数固定,第三个数为前两个数之和
function fn(num) {
if(num === 1 || num === 2){ // 结束条件一当数字 === 1时
return 1
} // 结束条件二当数字 === 2时
// console.log(num + ',')
return fn(num - 1) + fn(num - 2) // 调用自身并且返回为前两个数之和
}
var res = fn(4)
console.log(res)
2. 对象的基本操作
- 对象:JS中的一种数据类型属于引用数据类型(复杂数据类型)算是一种数据的集合,内部可以存储任意数据
var obj = { //字面量的方法创建对象(很常用)
大括号内部不书写代码,书写数据
}
var obj = new Object() //通过内置的构造函数创建
包括两种语法,点语法,中括号语法 2. 增:
var obj = {
name = '张三'
}
obj.age = 18 //增加一个新的属性,属性值为18
obj['age'] = 18
- 删
var obj = {
name = '张三'
}
delete obj.name //删除一个属性
delete obj['age']
- 改
var obj = {
name = '张三'
}
obj.name = '李四' //改一个属性,属性值改为'李四'
obj['name'] = '李四'
- 查
var obj = {
name = '张三'
}
console.log(obj.name) //查找一个属性的属性值
console.log(obj['name'])
3. 两种语法的差别:
- 如果对象的属性符合变量的命名规范那么两种语法都可以,如果操作一些不符合变量命名规范的时候更多场景用中括号语法
- 如果用的是变量要使用中括号语法,点语法后续跟的内容会自动转化为一个字符串,不会当成变量使用
- 对象的中括号语法内可以书写变量会将变量转为对应的值
4. 循环遍历对象
- for...in
var obj = {
name : 'qs001' ,
age : 18 ,
str : 'qwer'
}
for(var k in obj) {
console.log(k)
} //可以拿到对象所有的key(键),想要拿到值用console.log(obj[k])
5. 数组
- 概念:一组存放数据的集合,简单来说我们将一组数据存放到一个盒子中,这个盒子就是数组
- 数组的创建:
//两种数组定义方法
//1.字面量创建数组(常见方法)
var arr = [100, 200, 300, 400, 500] //创建一个长度为5,数据位100, 200, 300, 400, 500的数组
//2. 内置构造函数创建数组
var arr1 = new Array(5) //创建一个长度为5的空数组
var arr2 = new Array(100, 200, 300, 400, 500) //创建一个长度为5,数据位100, 200, 300, 400, 500的数组
console.log(arr) //打印数组
console.log(arr1) //打印数组
console.log(arr2) //打印数组
console.log(arr.length) //打印数组的长度
console.log(arr1.length) //打印数组的长度
console.log(arr[3]) //打印数组的下标为3的那个数
console.log(arr2[2]) //打印数组下标为2的那个数
- 数组的length: 数组的长度,由数组内部多少成员(数据)来决定的跟数组每个成员的值没有任何关系
console.log(数组名.length) //打印数组长度
- 数组的索引(下标) 表示的是数组当前位置 从0开始!!!到数组.length - 1结束
console.log(数组[下标值]) //拿到数组某个位置的值
- 遍历数组
//逻辑:1.外层for循环
//2.定义初始值为0(因为要跟下标开始一样),结束条件为小于等于数组。length,执行代码为打印数组的值,初始之改变
var num = [1,2,3,4,5]
for(var i = 0; i < num.length; i++){
console.log(num[i])
}