跳到主要内容

认识

2023年06月08日
柏拉文
越努力,越幸运

if


for


操作

  • 终止本次循环

    • 通过 continue

      for (let i = 0; i < 5; i++) {
      if (i == 3) {
      continue;
      }
      console.log(i);
      }
    • 通过 return

      let array = [2, 3, 4, 5, 6];
      array.forEach((val) => {
      if (val == 3) {
      return;
      }
      console.log(val);
      });
  • 终止整个循环

    • 通过 break

      for (let i = 0; i < 6; i++) {
      if (i == 3) {
      break;
      }
      console.log(i);
      }
  • 终止执行(与函数连用)

    • 通过 return

      function fun() {
      for (let i = 0; i < 6; i++) {
      if (i == 3) {
      return;
      }
      console.log(i);
      }
      }
      fun();

with


with语句 扩展一个语句的作用域链。

语法

with (expression) {
statement
}
  • expression: 将给定的表达式添加到在评估语句时使用的作用域链上。表达式周围的括号是必需的。
  • statement: 任何语句。要执行多个语句,请使用一个块语句 ({ ... })对这些语句进行分组。

应用场景

  • 给一个函数扩充作用域

    const obj = {name:'obj'};
    function foo(){
    const name = 'foo';
    with(obj){
    console.log(name); // 优先从 with 指定的对象作用域寻找 ---> 其次从函数作用域寻找 ---> 最后从全局作用域寻找
    }
    }

while


语法


优雅写法一: 当 b 为真时,执行a=b--循环体

let a ;
let b = 4;
while((a = b--)){
console.log(a);
}

// 相当于

// let a ;
// let b = 4;
// while(b){
// a = b--;
// console.log(a);
// }

for-in


for-in

语法

for(let key in 数据){

}

用法

对象

for(let key in {}){
key 为 遍历获得键名
}

数组

for(let index in []){
index 为 遍历获得索引
}

特点

对比

for-in vs for-of vs forEach vs Map

  • map: 只能遍历数组,不能中断,返回值是修改后的数组;

  • forEach: 只能遍历数组; 没有返回值(或认为返回值是undefined); 无法中途跳出forEach循环,break命令或return命令都不能奏效;

  • for...in循环: 遍历获得键名,且遍历的结果都是字符串(尽管数组元素索引值为 Number 类型); 遍历对象自身的和继承的可枚举的属性; 中途可以跳出循环;

  • for...of循环: 遍历获得键值; 中途可以跳出循环; 提供了遍历所有数据结构的统一操作接口, 一个数据结构只要在Symbol.iterator属性上部署了Iterator接口, 就可以用for...of循环遍历它的成员;

for-of


for-of 用于循环遍历数据结构。 一个数据结构只要在Symbol.iterator属性上部署了Iterator接口, 就可以用for...of循环遍历它的成员。也就是说,for...of循环内部调用的是数据结构的Symbol.iterator方法。

语法

for(let value of 数据){

}

用法

数组

for(let value of []){
value 为 遍历获得键值
}

特点

对比

for-in vs for-of vs forEach vs Map

  • map: 只能遍历数组,不能中断,返回值是修改后的数组;

  • forEach: 只能遍历数组; 没有返回值(或认为返回值是undefined); 无法中途跳出forEach循环,break命令或return命令都不能奏效;

  • for...in循环: 遍历获得键名,且遍历的结果都是字符串(尽管数组元素索引值为 Number 类型); 遍历对象自身的和继承的可枚举的属性; 中途可以跳出循环;

  • for...of循环: 遍历获得键值; 中途可以跳出循环; 提供了遍历所有数据结构的统一操作接口, 一个数据结构只要在Symbol.iterator属性上部署了Iterator接口, 就可以用for...of循环遍历它的成员;

switch


do-while


try/catch/finally


语法

try{
console.log('代码正确时执行的')
}catch(error){
console.log('代码报错时执行的')
}finally{
console.log('代码正确和错误都会执行')
}

break 和 continue