运算符

赋值运算符

进行运算后,直接赋值的操作

  • 赋值运算符:+=-=*=/=%=
  • 与C语言一样

一元运算符

当只需要加减1的时候,++为自增,--为自减

1
2
3
4
5
6
let num = 10
/*以自增为例,自减同理*/
console.log(++num) //前置自增,先增后赋值,输出11
console.log(num++) //后置自增,先赋值再增,输出11
let i = 1
document.write(i++ + ++i + i) //例如这个,输出为7

比较运算符

比较结果为boolean类型,即true(1)、false(0)

运算符 作用
> 左边是否大于右边
< 左边是否小于右边
>= 左边是否大于或等于右边
<= 左边是否小于或等于右边
=== 左右两边是否类型都相等(重点)
== 左右两边值是否相等
!= 左右值不相等
!== 左右两边是否不全等
注意:
  • =:为赋值
  • ==:为判断
  • ===: 为全等

逻辑运算符

符号 名称 日常读法 特点
&& 逻辑与 并且 符号两边有一个假的结果为假
|| 逻辑或 或者 符号两边有一个真的结果为真
! 逻辑非 取反 true变false false变true

运算符优先级

image.png

分支语句

if语句

1
2
3
4
5
6
7
if(/*条件1*/){
//满足条件1执行的代码
}else if(/*条件2*/){
//满足条件2执行的代码
}else {
//所以都不满足执行的代码
}

三元运算符

使用场景: 一些简单的双分支,可以使用 三元运算符(三元表达式),写起来比 if else双分支 更简单

符号:? 与 : 配合使用

语法:

  • 条件 ? 表达式1 : 表达式2
  • 如果条件为真,则执行表达式1
  • 如果条件为假,则执行表达式2
1
2
3
4
5
console.log(5 < 3 ? '真的' : '假的')  //输出假的

let num = 1
num = num >= 10 ? num : 5 + num //将结果赋值给num
alert(num) //输出6

switch语句

1
2
3
4
5
6
7
8
9
10
11
12
switch (2) {
case 1:
console.log('您选择的是1')
break // 退出switch
case 2:
console.log('您选择的是2')
break // 退出switch
case 3:
console.log('您选择的是3')
break // 退出switch
default:
console.log('没有符合条件的')

循环语句

断点调试(补充)

作用: 学习时可以帮助更好的理解代码运行,工作时可以更快找到bug

浏览器打开调试界面

  1. 按F12打开开发者工具
  2. 点到源代码一栏 ( sources )
  3. 选择代码文件

断点:在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来

image.png

while循环

while : 在…. 期间, 所以 while循环 就是在满足条件期间,重复执行某些代码。

语法:

1
2
3
4
5
let i = 1
while (i <= 3) {
document.write('月薪过万不是梦,毕业时候见英雄~<br>')
i++ // 这里千万不要忘了变量自增否则造成死循环
}

循环三要素:

  1. 初始值 (经常用变量)
  2. 终止条件
  3. 变量的变化量

for循环

for循环基本用法:

1
2
3
for(let i = 1; i <= 6; i++) {
document.write(`<h${i}>循环控制,即重复执行<h${i}>`)
}

结论:

  • JavaScript 提供了多种语句来实现循环控制,但无论使用哪种语句都离不开循环的3个特征,即起始值、变化量、终止条件,做为初学者应着重体会这3个特征。
  • 起始值、变化量、终止条件,由开发者根据逻辑需要进行设计,规避死循环的发生。
  • 当如果明确了循环的次数的时候推荐使用for循环,当不明确循环的次数的时候推荐使用while循环

嵌套for循环:

1
2
3
4
5
6
for (let i = 1; i < 4; i++) {
document.write(`第${i}天 <br>`)
for (let j = 1; j < 6; j++) {
document.write(`记住第${j}个单词<br>`)
}
}

中止循环

break 中止整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用(提高效率)

continue 中止本次循环,一般用于排除或者跳过某一个选项的时候

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//以while为例,for同理
let i = 1
while (i <= 5) {
console.log(i)
if (i === 3) {
break // 退出循环
}
i++
}//输出123

i = 1
while (i <= 5) {
if (i === 3) {
i++
continue
}
console.log(i)
i++
}//输出1245

无限循环

while(true)for( ; ; )来构造“无限”循环,需要使用break退出循环。(常用)

1
2
3
4
5
6
7
8
9
10
11
12
13
while (true) {
let love = prompt('你爱我吗?')
if (love === '爱') {
break //遇到爱则停止循环
}
}

for (; ;) {
let love = prompt('你爱我吗?')
if (love === '爱') {
break
}
}

数组

定义数组:

1
2
3
4
5
6
7
// 1. 语法,使用 [] 来定义一个空数组
// 定义一个空数组,然后赋值给变量 classes
let classes = [];
// 2. 定义非空数组
let classes = ['小明', '小刚', '小红', '小丽', '小米']
// 3. 数组是对象类型,对应着一个 length 属性,它的含义是获取数组的长度
console.log(classes.length) // 5

数组做为对象数据类型,不但有 length 属性可以使用,还提供了许多方法:

  1. push() 动态向数组的尾部添加一个单元
  2. unshift() 动态向数组头部添加一个单元
  3. pop() 删除最后一个单元
  4. shift() 删除第一个单元
  5. splice() 动态删除任意单元

使用以上4个方法时,都是直接在原数组上进行操作,即成功调任何一个方法,原数组都跟着发生相应的改变。并且在添加或删除单元时 length 并不会发生错乱。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 定义一个数组
let arr = ['html', 'css', 'javascript']

// 1. push 动态向数组的尾部添加一个单元
arr.push('Nodejs')
console.log(arr) //['html', 'css', 'javascript', 'Nodejs']

// 2. unshit 动态向数组头部添加一个单元
arr.unshift('VS Code')
console.log(arr) //['VS Code', 'html', 'css', 'javascript', 'Nodejs']

// 3. splice 动态删除任意单元
arr.splice(2, 1) // 从索引值为2的位置开始删除1个单元
console.log(arr) //['VS Code', 'html', 'javascript', 'Nodejs']

// 4. pop 删除最后一个单元
arr.pop()
console.log(arr) //['VS Code', 'html', 'javascript']

// 5. shift 删除第一个单元
arr.shift()
console.log(arr) //['html', 'javascript']