JavaScript学习笔记(二)

一、运算符

1.1 算术运算符

数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)。        
        +:求和
        -:求差
        *:求积
        /:求商
        %:取模(取余数) , 开发中经常作为某个数字是否被整除
JavaScript中 优先级越高越先被执行, 优先级相同时以书从左向右执行
        乘、除、取余优先级相同
        加、减优先级相同
        乘、除、取余优先级大于加、减
        使用 () 可以提升优先级
        总结: 先乘除后加减,有括号先算括号里面的。

1.2 赋值运算符

赋值运算符:对变量进行赋值的运算符
= 将等号右边的值赋予给左边, 要求左边必须是一个容器
+=
-=
*=
/=
%=

1.3 一元运算符

只需要一个表达式就可以运算的运算符叫一元运算符。例:正负号
二元运算符,例:let num = 10 + 20
自增:
        符号:++
        作用:让变量的值 +1
自减:
        符号:--
        作用:让变量的值 -1
 
自增运算符的用法:
        前置自增:
                let num = 1
                ++num
                先自加后赋值
        后置自增:
                let num = 1
                num++
                先赋值后自加
let i = 1
console.log(i++ + ++i + i)
/* 
    i = 1
    i++为 1,i = 2(先赋值,后自加)
    ++i为 3,i = 3(先自加,后赋值)
    i++ + ++i + i  等价于
    1   + 3   + 3
*/

1.4 比较运算符

比较运算符:
        >:左边是否大于右边
        <:左边是否小于右边
        >=:左边是否大于或等于右边
        <=:左边是否小于或等于右边
         ==:左右两边是否相等
         ===:左右两边是否类型和值都相等
        !==:左右两边是否不全等
比较结果为boolean类型,即只会得到true或false
比较运算符的细节
字符串比较,是比较的字符对应的ASCII码
        从左往右依次比较
        如果第一位一样再比较第二位,以此类推
NaN不等于任何值,包括它本身
尽量不要比较小数,因为小数有精度问题
不同类型之间比较会发生隐式转换
        最终把数据隐式转换转成number类型再比较
        所以开发中,如果进行准确的比较我们 更喜欢 === 或者 !==

1.5 逻辑运算符

逻辑运算符用来解决多重条件判断

逻辑运算符里的短路
短路:只存在于 && 和 || 中,当满足一定条件会让右边代码不执行
&&         左边为false就短路                ||        左边为true就短路

1.6 运算符优先级

二、语句

2.1 表达式和语句

表达式:表达式是一组代码的集合,JavaScript 解释器会将其计算出一个结果
语句:js 整句或命令, js 语句是以分号结束(可以省略) 比如: if语句 for 循环语句
区别:
表达式计算出一个值,但语句用来自行以使某件事发生 ( 做什么事 )
表达式
        3 + 4
语句
        alert() 弹出对话框
其实某些情况,也可以把表达式理解为语句,因为它是在计算结果,也是做事

2.2 分支语句

① 程序三大流程控制语句
②  支语句
分支语句可以让我们有 选择性 的执行想要的代码
分支语句包含:
        If分支语句
        三元运算符
        switch 语句

if分支语句

if语句有三种使用:单分支、双分支、多分支
单分支使用语法:
        if (条件) {
            满足条件要执行的代码     
        }        
括号内的条件为true时,进入大括号里执行代码
小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型
双分支if语法:
        if (条件) {
            满足条件要执行的代码     
        } else {
            不满足条件要执行的代码
        }   
多分支if语法:
        if (条件1) {
            代码1    
        } else if (条件2) {
            代码2
        } else if (条件3) {
            代码3  
        } else {
            代码n
        }
释义:
        先判断条件1,若满足条件1就执行代码1,其他不执行
        若不满足则向下判断条件2,满足条件2执行代码2,其他不执行
        若依然不满足继续往下判断,依次类推
        若以上条件都不满足,执行else里的代码n
        注:可以写N个条件,但这里演示只写2个
三元运算符      
  条件 ? 满足条件执行的代码 : 不满足条件执行的代码
switch语句        
switch(数据) {
      case 值1:
        代码1
        break
      case 数据2:
        代码2
        break
      case 数据3:
        代码3
        break
      default:
        代码n
}

释义:
    找到跟小括号里数据全等的case值,并执行里面对应的代码
    若没有全等 === 的则执行default里的代码
switch case语句一般用于等值判断,不适合于区间判断
switch case一般需要配合break关键字使用 没有break会造成case穿透

2.3 循环语句

2.3.1 while循环

while (循环条件) {
    要重复执行的代码(循环体)
}
释义:
    跟if语句很像,都要满足小括号里的条件为true才会进入执行代码
    while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到小括号判断条件,直到括号内条件不满足,即跳出

2.3.2 循环退出

continue:结束本次循环,继续下次循环
break:跳出所在的循环

2.3.3 for循环

for (声明起始值; 循环条件; 变化值) {
    循环体
}

三、数组

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

3.1 数组的基本使用

数组(Array)是一种可以按顺序保存多个数据
① 声明语法
        let 数组名 = [数据1, 数据2, ..., 数据n]
        数组是按顺序保存,所以每个数据都有自己的编号
        计算机中的编号从0开始,所以小明的编号为0,小刚编号为1,以此类推
        在数组中,数据的编号也叫 索引或下标
        数组可以存储任意类型的数据
② 取值语法
        数组名[下标]
        通过下标取数据
        取出来是什么类型的,就根据这种类型特点来访问
③ 一些术语
        元素:数组中保存的每个数据都叫数组元素
        下标:数组中数据的编号
        长度:数组中数据的个数,通过数组的length属性获得
④ 遍历数组
        用循环把数组中每个元素都访问到,一般会用for循环遍历

3.2 操作数组

数组增加新的数据
        数组.push(新增的内容) 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度 
        arr.unshift(新增的内容) 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度     
数组删除元素
        数组. pop() 方法从数组中删除最后一个元素,并返回该元素的值
        数组. shift() 方法从数组中删除第一个元素,并返回该元素的值
        数组. splice(start, deleteCount) 方法 删除指定元素
        解释:
                start 起始位置:
                                指定修改的开始位置(从0计数)
                deleteCount:
                                表示要移除的数组元素的个数
                                可选的。 如果省略则默认从指定的起始位置删除到最后
补充:splice方法既可以在数组中插入元素,可以在数组中删除元素。
还有第二种用法,插入元素
数组. splice(插入的位置, 0, 插入的元素) 方法 在指定的索引位置插入一个新的元素,第二个参数为删除的位置,如果为 0, 则代表不会删除元素,而是插入元素。

3.3 冒泡排序

 // 一共需要 length - 1 趟循环
    for (let i = 0; i < arr.length - 1;i++) {
      // 每趟循环交换 length - 1 - i 次
      for (let j = 0; j < arr.length - i - 1; j++) {
        if(arr[j] > arr[j + 1]) {
          let temp = arr[j]
          arr[j] = arr[j + 1]
          arr[j + 1] = temp 
        }
      }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值