欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

JavaScript 基础 - 语句

最编程 2024-03-04 22:13:21
...

表达式和语句

什么是表达式? 表达式是可以被求值的代码, JS引擎会将其计算出一个结果, 3 + 4, num++等都是表达式

什么是语句? 语句是一段可以执行的代码, 比如if语句、for循环语句等等

表达式和语句的区别
表达式 表达式可以被求值, 所以它可以卸载赋值语句的右侧
语句 语句不一定有值, 比如alert()、for等语句就不能被用于赋值

分支语句

程序的三种流程控制语句

  1. 顺序结构: 从上往下依次执行, 每条语句都会执行到
  2. 分支结构: 根据条件选择执行代码(有选择性)
  3. 循环语句: 某段代码被重复执行

在这里插入图片描述

分支语句包含: if分支三元运算符switch分支

if分支语句

if分支语句又分为单分支语句、双分支语句、多分枝语句

// 单分支语句
if(条件) {
  符合条件时执行这里的语句
}
// 双分支语句
if(条件) {
  满足条件要执行的代码
} else {
  不满足条件执行的代码
}
// 多分支if语句
if(condition1) {
  code1
} else if(condition2) {
  code2
} else if(condition3) {
  code3
} else {
  codeelse
}

上面的代码块中的条件表达式值如果不为boolean类型, 就会发生隐式类型转换, 因此具有如下特点:

  • 当条件为数字时, 除了0和NaN所有的数字都为真
  • 当条件为字符串时, 除了**‘’**(空字符串)都为真
  • ⚠️ ’ ‘和’'不一样, ’ '为真, ''为假

例1: 判断指定年份是闰年还是平年?

let year = +prompt('请输入年份:')
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
	alert(`${year}是闰年`);
} else {
	alert(`${year}是平年`)
}
三元运算符

三元运算符(需要三个操作数)通用 ?:配合使用, 一般用来取值

语法如下, 当condition为true时, 执行code1, 否则执行code2

condition ? code1 : code2

例1: 输入一个数字, 如果数字小于10, 就在前面补一个0

let num = prompt('请输入一个数字:')
alert(num < 10 ? 0 + num : num) // +两边有一个字符串, 则结果为字符串
switch语句

找到跟目标数据相等的case, 并执行里面对应的代码; 如果没有全等, 则执行default里面的代码

switch (data) {
  case value1: {
    code1
    break
  }
  case value2: {
    code2
    break
  }
  case value3 {
    code3
    break
	}
	default { // 相当于if...else...分支中的else部分
		codeDefault 
	}
}

⚠️ 必须确保case中有break, 否则会发生穿透(之后的case都会执行, 直到遇见break或者执行完default)

什么是穿透?

执行完指定case的代码块后, 不会退出该switch代码块, 而是继续执行下一个case的代码块, 直到遇见break或者执行完default代码块

例1: 实现一个简易计算器

let num1 = +prompt('please input the first number:')
let num2 = +prompt('please input the second number:')
let operator = prompt('please input the operator:')
let result
switch (operator) {
	case '+':
		result = num1 + num2
		break
	case '-':
		result = num1 - num2
		break
	case '*':
		result = num1 * num2
		break
	case '/':
		result = num1 / num2
		break
	default:
		alert('Not an operator')
}
alert(`result is ${result}`)

switch和if之间的区别:

  • switch…case语句通常处理case为确定值的情况, 而if…else…语句更加灵活, 通常用于范围判断
  • switch语句进行判断后直接执行到程序的语句, 效率更高. 而if…else…语句有几种判断条件, 就得判断多少次
  • switch一定要注意必须是 ===全等, 一定注意数据类型, 同时一定要写break, 否则会有穿透效果

循环语句

循环: 重复执行一些操作

循环的本质就是以某个变量为起始值, 然后不断产生变化量, 慢慢靠近终止条件的过程

while循环

while: 在…期间, 满足条件期间, 重复执行某段代码

while(条件) {
  code // 循环体
}

while大括号里面代码执行完毕后不会跳出, 而是继续回到小括号里面判断条件是否满足, 若满足又执行大括号里的代码, 然后再回到小括号判断条件, 直到括号里的条件不满足才跳出

while循环的三要素:

  • 变量起始值
  • 终止条件(没有终止条件, 循环会一直执行, 造成死循环)
  • 变量变化量(改变条件涉及的变量, 用自增或者自减)
for循环

for循环把循环三要素(声明起始值、终止条件、变量变化量)写在一起,一目了然, 最为常用

for循环的语法:

for (变量起始值; 终止条件; 变量变化量) {
  // 循环体
}

for循环的最大价值: 循环数组

let array = ['jack', 'zhao', 'zhang', 'huang']
for (let i = 0; i < array.length; i++) {
  console.log(array[i]);
}

console.log(array[6666]) // undefined JS不存在数组越界问题

无限循环的写法:

  • while(true)
  • for( ; ????

什么时候用for循环, 什么时候使用while

  • 如果明确了循环的次数的时候使用for
  • 存在循环嵌套时, 使用for
  • 当不明确循环的次数时, 使用while
for循环嵌套

一个循环里面有另一个循环

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

循环退出

  • break: 退出整个循环, 用于结果已经得到, 后续的循环不需要再执行
  • continue: 结束本次循环, 继续下次循环(不退出整个循环), 用于排除或者跳过某一个选项

例: 页面弹出对话框, ‘你爱我吗’, 如果输入’❤️’, 则退出循环, 否则一直弹出

let answer
while (answer !== '❤️') {
	answer = prompt('你爱我吗')
}
alert('❤️')