JavaScrpit 基础系列之语句(条件、循环)(六)

405 阅读2分钟

条件

三元运算符

// 语法
variablename = (condition) ? value1:value2

// 例
var sex = 1 
var sexDesc = sex == 1 ? '男' : '女'

if、else、else if

if 语句

if 使用小写字母

// 语法
if (条件) {
    如果条件为 true 时执行的代码
}

// 例 
if(age > 18) {
    return '已成年了'
}

else 语句

// 语法
if (条件) {
    条件为 true 时执行的代码块
} else { 
    条件为 false 时执行的代码块
}

// 例 
if(age > 18) {
    return '已成年了'
} else {
    return '未成年'
}

else if 语句

// 语法
if (条件 1) {
    条件 1true 时执行的代码块
} else if (条件 2) {
    条件 1false 而条件 2true 时执行的代码块
 } else {
    条件 1 和条件 2 同时为 false 时执行的代码块
}

// 例 
if(age > 18) {
    return '已成年了'
} else if (age == 18) {
    return '刚成年'
} else {
    return '未成年'
}

Switch

switch 语句来选择多个需被执行的代码块之一。
通过 switch 中的表达式与每个 case 做对比,如果匹配就执行对应语句。
switch 表达式与 case 做比较是值与数据类型都必须相同===
break 关键词,如果 switch 表达式与 case 匹配就跳出 switch 语句。
defauklt 关键词,如果配不到 case 语句时执行

// 语法
switch(表达式) {
     case n:
        代码块
        break;
     case n:
        代码块
        break;
     default:
        默认代码块
} 

//例
switch (new Date().getDay()) {
    case 6:
        text = "今天是周六";
        break; 
    case 0:
        text = "今天是周日";
        break; 
    default: 
        text = "期待周末~";
} 

循环

for

for 多次循环代码块

  • 语句1 在循环前执行
  • 语句2 循环条件
  • 语句3 循环每次被执行后执行
// 语法
for (语句 1; 语句 2; 语句 3) {
     要执行的代码块
}
// 例
for (var i = 0; i < 10; i++) {
     console.log('我是第' + i + '号')
}

for/in

  • for/in 遍历对象的属性
  • variable 对于每次迭代,下一个属性的值都会赋给变量。变量可以用 const、let 或 var 声明。
  • iterable 拥有可迭代属性的对象
// 语法
for (variable in iterable) {
  code block to be executed
}

// 例
var obj = {
    name: '张三',
    sex: '男',
    age: 18
}
var keys = []
var values = []
for (key in obj) {
    keys.push(key)
    values.push(obj[key])
}
console.log(keys) // ["name", "sex", "age"]
console.log(values) // ["张三", "男", 18]

for/of

for/of 循环遍历可迭代对象的值

// 语法
for (variable of iterable) {
  code block to be executed
}

// 例
var arr = ['A', 'B', 'C', 'D']
var str = ''
for (val of arr) {
    str += val
}
console.log(str) // ABCD

for/in vs for/in

参考 www.jianshu.com/p/1f9948daf…juejin.cn/post/684490…

for/in循环缺点:

  • 数组的键名是数字,但是 for/in 循环是以字符串作为键名“0”、“1”、“2”等等。
  • for/in 循环不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键。
  • 某些情况下,for/in 循环会以任意顺序遍历键名。

for/of 循环优点:

  • for/in 一样的简洁语法,但是没有for/in那些缺点。
  • 不同于 forEach 方法,它可以与break、continue和return配合使用。
  • 提供了遍历所有数据结构的统一操作接口。

for/in遍历的是数组的索引(即键名),而for/of遍历的是数组元素值。 所以for/in更适合遍历对象,不要使用for/in遍历数组。

while

while 循环会一直循环代码块,只要指定的条件为 true。

// 语法
while (条件) {
    要执行的代码块
}

// 例
var i = 10
while (i <= 10 && i > 0) {
    console.log('我是第' + i + '名')
    i--
}

do/while

// 语法
do {
    要执行的代码块
}

while (条件);

// 例
var i = 10
do {
    console.log('我是第' + i + '名')
    i--
}
while (i <= 10 && i > 0)

跳出循环

break break 语句会中断循环,并继续执行循环之后的代码。
如果没有标签引用,只能用于跳出一个循环或一个 switch

for (var i = 1; i < 10; i++) {
    if (i > 3) { break; }
    console.log('我是第' + i + '名')
}

continue continue 语句中断(循环中)的一个迭代,如果发生指定的条件。然后继续循环中的下一个迭代。
不论有无标签引用只能用于跳过一个迭代

for (var i = 1; i < 10; i++) {
    if (i > 3) { continue; }
    console.log('我是第' + i + '名')
}