初学JS第五天

91 阅读3分钟

1. 递归函数

  1. 递归函数对浏览器性能占用挺大建议少用
  2. 含义:在一个函数内调用了自身就算是递归函数,但是如果没有设置结束条件就会无限循环,递归函数需要设置结束条件 例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. 对象的基本操作

  1. 对象: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. 两种语法的差别:

  1. 如果对象的属性符合变量的命名规范那么两种语法都可以,如果操作一些不符合变量命名规范的时候更多场景用中括号语法
  2. 如果用的是变量要使用中括号语法,点语法后续跟的内容会自动转化为一个字符串,不会当成变量使用
  3. 对象的中括号语法内可以书写变量会将变量转为对应的值

4. 循环遍历对象

  1. 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. 概念:一组存放数据的集合,简单来说我们将一组数据存放到一个盒子中,这个盒子就是数组
  2. 数组的创建:
 //两种数组定义方法
//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的那个数
  1. 数组的length: 数组的长度,由数组内部多少成员(数据)来决定的跟数组每个成员的值没有任何关系
console.log(数组名.length) //打印数组长度
  1. 数组的索引(下标) 表示的是数组当前位置 从0开始!!!到数组.length - 1结束
console.log(数组[下标值]) //拿到数组某个位置的值
  1. 遍历数组
//逻辑:1.外层for循环
//2.定义初始值为0(因为要跟下标开始一样),结束条件为小于等于数组。length,执行代码为打印数组的值,初始之改变
var num = [1,2,3,4,5]
for(var i = 0; i < num.length; i++){
  console.log(num[i])
}