js基础第三天

139 阅读7分钟

for循环

1.for循环语法

  • 也是重复执行代码

  • 好处:把声明起始值、循环条件、变化值写到一起,让人一目了然

    for(声明记录循环次数的变量;循环条件;变化值){

    循环体

    }

for和while的异同

一:共同点

  • 都是循环
  • 都有三要素

二:区别

  • for循环

    • 当如果明确了循环的次数的时候推荐使用for循环
    • 当不明确循环的次数的时候推荐使用while循环

退出循环

  • continue:结束本次循环,继续下次循环
  • break:跳出所在的循环 //可以退出当前循环

嵌套循环

for(外部声明记录循环次数的变量;循环条件;变化值;){
    for(内部声明记录循环次数的变量;循环条件;变化值;)
}

数组

数组(Array)是一种可以按顺序保存数据的数据类型、

可以一次性存储多个数据

数组的基本使用

1.声明语法

let 数组名 = [数据1,数据2,数据3.]

1.如果是名词,请在后面加s \ es

2.其他常见名称有: arr list items

studentList postList

3.数据是按顺序保存的

例如:let 数组名 = ['小明','小刚','小红']

特性:

  • 数组的元素{值}的存储是有顺序的,索引顺序从0开始
  • 数组是按顺序保存,所以每个数据都有自己的编号
  • 计算机中的编号从0开始,所以小明的编号为0,小刚的编号为1,以此类推
  • 在数组中,数据的编号也叫索引或下标
  • 数据可以存储任意类型的数据
  • 后期操作数据靠索引下标来操作

操作:操作是指 增加 删除 修改 查询(获取)

2.取值语法

数据名[下标]

let names = ['小明','小刚','小红']

names[0] 小明

补充:names[100] 如果没有这个索引 则会返回undefined -- 索引越界 不会报错

3.一些术语

  • 元素: 数组中保存的每个数据都叫数组元素
  • 下标:数组中数据的编号
  • 长度:数据中数据的个数,通过数组的length属性获取

4.遍历数组:

用循环把数组中每个元素都访问到,一般会用到for循环遍历

语法:

for(let i = 0; i< 数组名.length;i++){
    数组名[i]
}数组操作

操作数组 增 删 改 查

1.数组增加新的数据push(你想追加的元素)

数组.push() 方法将一个或多个元素追加

特点:

  • 它是将元素添加到数组的最后
  • 返回新增元素之后数组的长度

2.数组插入新的数据unshift(你想插入的元素)

  • 它是将元素添加到数组的开头
  • 返回新增元素之后数组的长度

2.数组删除元素

  • 数组.pop() 方法从数组中删除最后一个元素,并放回该元素的值

语法:数组名.pop()

可以删除数组的最后一个元素,并且返回当前被删除的元素

  • 数组.shift() 方法可以删除数组的第一个元素

语法:数组名.shift()

重点:* *使用splice()**删除 (后续最经常使用)

语法:数组() 方法 删除指定元素

数组名.splice(起始索引,删除数量)
起始索引:从0开始
删除的数量:可以指定数量,如果没有指定,则删除从索引位置开始一直到最后的所有元素()

数组的修改

数组[下标] = 新值

例如:

let arr = [1,2,34,5,6]
arr[10] = 100
console.log(arr) //此时数组的长度会变成10 并且在10索引的位置添加10这个元素
注意:如果索引不存在  就是添加:就是在当前索引位置添加一个元素,同时这个操作会改变当前数组的长度

函数

function是被设置为执行特定任务的代码块

说明:函数可以把具有相同或相似逻辑的代码包裹起来,通过函数调用执行这些被包裹的代码逻辑,这么做有利于精简代码结构方便复用

函数的使用

  • 函数声明语法

    - function 函数名(){
    ​
      函数体
    ​
    }
    
  • 函数的命名规范

    • 和变量命名基本一致
    • 尽量小驼峰命名法
    • 前缀应该为动词
    • 命名建议:常用动词约定
动词含义
can判断是否可执行某个动作
has判断是否含义某个值
is判断是否为某个值
get获取某个值
set设置某个值
load加载某些数据
  • 函数的调用
函数名()

有参数的函数声明和调用

  • 声明语法
function 函数名(参数列表){
    函数体
}
  • 参数列表

    • 传入数据列表
    • 声明这个函数需要传入几个数据
    • 多个数据要用逗号隔开
  • 例:

    • 单个参数
function getSquare(num1){
    document.write(num1 * num1)
}
  • 多个参数
function getSum(num1,num2){
    document.write(num1 + num2)
}

多参数设置

形参:

  1. 在定义方法时声明的参数,在方法的()中声明的

  2. 形参,说明需要一个值

  3. 特点

    1. 调用前,他是一个参数的占位,说明调用方法需要传递值过来
    2. 调用时,形参是 方法的局部变量,只有在方法中可以使用,在方法外不能使用
  4. 实参

    1. 实参是指实际参数,也就是实际存在的值,它是一个真正的值
    2. 实际是调用者来准备的

结论: 调用方法传递参数 就是实参为形参赋值的表现

let sum = 0
        function getSum(start,end) {
                    //  start,end 就是形参,形参可以理解为这个函数内声明的变量
            for(let i = start;i<=end;i++){
                sum += i
            }
            console.log(sum);
        }
​
​
        getSum(1,10)
            //1,10就是实参,实参可以理解为是给这个变量赋值

注意:如果没有传递参数,那么形参默认就是undefined,相当于定义了一个变量但是却没有赋值

函数的返回值

函数功能的单一性,函数只做业务处理,并不会对结果进行处理

它会将结果返回,让调用者进行处理

语法:

return

return关键字可以实现函数的值的返回

说明:

  1. 不是每个函数都会有返回值

函数返回值的细节

  1. 如果函数内部没有写return来返回值,也会默认返回undefined
  2. 默认情况下,函数只能返回一个值(变量) 如果想直接返回多个值,一般可以用一个结构(对象)进行包装
  3. 如果直接返回多个值 ,最终也会返回最后一个值
  4. return会立即结束当前函数 并且后面的代码不会再被执行
  5. 函数可以没有return 这种情况函数默认返回值为undefined
  6. return只能写在函数中
  7. 一个函数中可以写多个return,但是只会运行其中一个,函数执行的时候运行到return后面的代码不再执行
  8. 不同业务处理需要时候,可能会出现多个return,其中,中止函数运行的return一般写在一个条件判断以内

函数作用域

变量作用域特殊情况:

  • 如果函数内部或者块级作用域内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐

  • 函数内部的形参可以看做是局部变量,所以形参相当于函数内部定义的局部变量,只有在函数内部可以使用。

  • 全局作用域,函数外部或者整个script有效

  • 局部作用域,也成函数作用域,函数内部有效

  • 块级作用域 {}有效

匿名函数

具名函数:在声明函数的时候为函数命名

匿名函数:在声明函数的时候没有名称

使用匿名函数可以很好的解决function函数的全局污染问题

语法:

let fn = function(){
    //函数体
}

调用:

fn() //函数名()

自调用函数

语法:

//第一个()优先级()  第二个()是函数调用的()
;(function(){
    
})()
//特点 我们不能人为调用
//以后的使用:
//避免全局污染 初始化