JS学习33~64

if和switch

1都能实现多分支

2大部分可以互换

区别:switch处理的是值比较确定的所以效率比较高(判断条件越多比较起来效率越高),而if else语句更加灵活

switch必须是===,一定要注意数据类型,同时注意break,防止穿透效果

1.当分支比较少时,if...else语句执行效率高。

2.分支比较多时,switch语句执行效率高,而且结构更清晰

for 循环

for(变量起始值;终止条件;变量变化量)

实例:

<script>

    let sum = 0

    for (let i = 1; i <= 100; i++) {

      if (i % 2 == 0) {

        sum += i

      }

    }

    document.write(`1~100的加和为:${sum}`)

  </script>

for循环的循环数组

<script>

    let arr = [`刘德华`, `刘小强`, `刘晓庆`]

    for (let i = 0; i < arr.length; i++) {

      console.log(arr[i])

    }

  </script>

for循环里面的条件是arr.length这样可以防止改动数组内容时再次改一遍for循环条件

数组里是从0开始

退出循环

continue 退出本次循环直奔i++

break 退出整个循环,结束循环

for(; ;)无限循环

明确使用次数优先考虑for循环

循环嵌套

执行完内部全部的循环才能进行外面的下一次循环

<script>

    for (let i = 1; i <= 5; i++) {

      document.write(`第${i}天<br>`)

      for (let j = 1; j <= 5; j++) {

        document.write(`记住第${j}个单词<br>`)

      }

    }

  </script>

控制输出行与列

<script>

    //外循环控制行数,内循环控制一行打印几个小星星

    for (let i = 1; i <= 5; i++) {

      for (let j = 1; j <= 5; j++) {

        document.write(`⭐`)

      }

      document.write(`<br>`)

    }

  </script>

效果图:

打印直角三角形

<script>

    for (let i = 1; i <= 5; i++) {

      for (let j = 1; j <= i; j++) {

        document.write(`⭐`)

      }

      document.write(`<br>`)

    }

  </script>

数组

是数据类型 单个变量保存多个数组

let 变量 = 【1,2,‘pink’】可以存放任意类型

undefined+任何数都为NAN

undifined+‘1’(字符串)为:undifined1

数组求和:

<script>

    let arr = [2, 3, 4, 5, 6]

    let sum = 0

    for (let i = 0; i < arr.length; i++) {

      sum += arr[i]

    }

    console.log(`数组的平均长度为:${sum / arr.length}`)

  </script>

求数组中的最大值和最小值

步骤

<script>

    let arr = [2, 6, 1, 77]

    let max = arr[0] //取出来第一个数赋值给max

    for(let i=1;i<arr.length;i++){

      if(max<arr[i]){

        max=arr[i]

      }

    }//属于遍历过程

    //最后输出即可

  </script>

修改数组

<script>

    let arr = ['pink', 'red', 'green']

    //直接修改

    arr[0] = 'hotpink'

    //给所有元素都加上‘老师’

    for (let i = 0; i < arr.length; i++) {

      arr[i] = arr[i] + '老师'

    }

  </script>

增加数组

数组.push()方法将一个或多个元素添加到数组的未尾,并返回该数组的新长度(重点)

在前面加:数组.unshift

例子:

数组筛选

需求:将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10的元素选出来,放入新数组

分析:①:声明一个新的数组用于存放新数据newArr②:遍历原来的旧数组,找出大于等于10的元素③:依次追加给新数组newArr

<script>

    let arr = [2, 0, 6, 1, 77, 69, 54, 78, 7]

    //声明一个新数组,用小驼峰命名法

    let newArr = [ ]

    //遍历旧数组中的每一个数

    for (let i = 0; i < arr.length; i++) {

      if (arr[i] >= 10) {

        //满足条件的追加给新数组

        newArr.push(arr[i])

      }

    }

    //最后输出新数组

    console.log(newArr)

  </script>

删除数组中的数据

1> 数组.pop( )从数组中删除最后一个元素,并且返回该元素

如:arr.pop( )  【删除的是最后一个!!一次只能删一个】

2> 数组.shift()从数组中删除第一个元素,并且返回该元素

如:arr.shift( )  【删除的是第一个!!一次只能删一个】

3> 数组.splice 删除指定元素

解释:

>start起始位置:

        >指定修改的开始位置(从0计数)

>deleteCount:

        >表示要移除的数组元素的个数

        >可选填。如果省略则默认从指定的起始位置删除到最后

冒泡排序

数组排序:

数组.sort( )

默认为升序

冒泡排序:第一层循环表示一共需要多少趟:数据减一

                每趟需要交换的次数:数据减i再减1

函数:

1.1function,是被设计为执行特定任务的代码块

1.2函数声明:

function 函数名(){

函数体

}

函数的调用:

函数名()

1.3函数传参

说明:这个默认值只会在缺少实参参数传递时才会被执行,所以有参数会优先执行传递过来的实参,否则默认为undefined(比如上一个图片中num1和2均未赋值默认值就是undefined,在调用getSum()时是NAN)

1.4函数的返回值

当调用某个函数,这个函数会返回一个结果出来

return 数据

细节:

>在函数体中使用return关键字能将内部的执行结果交给函数外部使用

>return后面代码不会再被执行,会立即结束当前函数,所以return后面的数据不要换行写(return后面的代码不会被执行)

>return函数可以没有return,这种情况函数默认返回值为undefined

函数细节补充·

        ●两个相同的函数后面的会覆盖前面的函数

        ●在Javascript中实参的个数和形参的个数可以不一致

                >如果形参过多会自动填上undefined(了解即可)

                >如果实参过多那么多余的实参会被忽略,剩余的形参不参与运算(函数内部有一个arguments,里面装着所有的实参)

        ●函数一旦碰到return就不会在往下执行了函数的结束用return

break结束的是循环和switch,return结束函数

1.5作用域

通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突

全局作用域:script和JS中的可任意被使用任意区域都可以访问和修改

局部作用域:只能在当前函数内部访问和修改

特殊情况:在函数内部,变量没有被声明直接赋值也当全局变量看,但是强烈不推荐!!

                  形参可以看作是函数的局部变量

变量的访问原则:

●只要是代码,就至少有一个作用域

●写在函数内部的局部作用域

●如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域

●访问原则:在能够访问到的情况下先局部,局部没有在找全局(遵循就近原则)

1.6匿名函数

function(){

}

使用方法

1.函数表达式将匿名函数赋值给一个变量,并且通过变量名称进行调用我们将这个称为函数表达式语法:let fn = function (){

}

fn()

函数表达式与具名函数不同

1>具名函数的调用可以写到任何位置

2>函数表达式必须先声明再调用

2.立即执行函数

写法:

1

(function(放形参){放函数内容})(放实参); 必须使用分号隔开 第二个小括号进行调用,所以第二个小括号内是实参

2

(function(放形参){放函数内容} (放实参));必须使用分号隔开

逻辑中断

&&遇到假的就停止

|| 遇到真的就停止

转换为布尔型

1.Boolean(内容)

记忆:‘  ’(表示空字符串)、0、undefined、null、false、NaN转换为布尔值后都是false,其余则为true

1.有字符串的加法“ ”+1,结果是“1”

2.减法-(像大多数数学运算一样)只能用于数字,它会使空字符串"转换为0

3.null经过数字转换之后会变为0

4.undefined经过数字转换之后会变为NaN

对象

1.1定义

对象是一种数据类型

可以理解为一种无序的数据集合,而数组是有序的数组集合

1.2使用

1对象的声明语法

let 对象名= { }                                                 let  对象名 = new Object()

实际开发中多用花括号。{}是对象字面量


2对象有属性和方法组成

属性:信息或叫特征(名词)

方法:功能或叫行为(动词)

let 对象名= {

属性名:属性值

方法名:函数

3属性

属性相当于变量 ,属性与属性之间要用逗号隔开

let pink = {

uname:'pink老师',(一定要加“,”)

age:18,

gender:‘女’

}

1.对象属性有顺序吗?  没有

2.属性和值用什么符号隔开?多个属性用什么隔开?  属性和值用:隔开   

                                                                                    多个属性用,逗号隔开

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值