1

条件语句

世上的条件语句,无非是些“如果”、“否则”。它们看似决定了程序的走向,实则不过是机器的顺从。若“如果”不成立,则“否则”立马出头——这倒像极了那时人们遇到选择的情形,总要等到不可退的地步,才不得不去另择他途。而这机械的“判断”,似乎与人们的人生抉择倒也如出一辙。
  • if 语句:
    if 语句倒是像人们在生死关头的抉择。布尔表达式为真,程序便走向了一条预定的道路,若为假,则一切转入未知。这个选择简单直接,犹如一个人站在岔路口,只有两条路可选,似乎没有第三种可能。

    const num_1:number = 5
    if (num_1 > 0) { 
     console.log("数字是正数") 
    }
  • if...else 语句:
    如果这条路走不通,还有一条备用之路,这不就是人类在失败后寻找其他出路的写照吗?当布尔表达式为假,else 路径随即而至,犹如人们在生活中的二次抉择,总是有得有失,有真有假,关键是如何在失败中找到另一条可行的路。

    const num_2:number = 12; 
    if (num_2 % 2==0) { 
      console.log("偶数"); 
    } else {
      console.log("奇数"); 
    }
  • if...else if...else 语句:
    而若是面对更多的选择,这 if...else if...else 就像一个人在人生路上不断被选择和判断所左右。人们总是希望自己走的是最优的那条路,但当第一个判断失败时,第二个机会便接踵而来。可惜,有时等人们意识到所有可能性都走完了,才发现终究无路可选——这“else”正是无奈的归宿。

    const num_3:number = 0 
    if(num_3 > 0) { 
      console.log(num_3+" 是正数") 
    } else if(num_3 < 0) { 
      console.log(num_3+" 是负数") 
    } else { 
      console.log(num_3+" 不是正数也不是负数") 
    }
    
  • switch 语句:
    switch 语句则仿佛人类社会中固定的阶层或是角色。人们在既定的框架里,按照不同的条件被分配到各自的“case”。每个人、每个变量都有自己的位置,选择了角色,便注定走上某条路。若没有合适的选项,最后只能归入“default”,如同社会中的边缘人,既不属于任何一方,却也必须接受现实的结局。

    const grade:string = "A"; 
    switch(grade) { 
      case "A": { 
          console.log("优"); 
          break; 
      } 
      case "B": { 
          console.log("良"); 
          break; 
      } 
      case "C": {
          console.log("及格"); 
          break;    
      } 
      case "D": { 
          console.log("不及格"); 
          break; 
      }  
      default: { 
          console.log("非法输入"); 
          break;              
      } 
    }

上述代码体验链接:https://www.typescriptlang.org/zh/play/

循环

循环,这个名称听来倒有些无奈。程序反复执行一段代码,像一台磨不完的机器,周而复始,若无结束条件,便会一直运作下去。这不禁让人想起那封建时代的人们,在命运的齿轮中兜兜转转,永无出路。人若无改进,程序也无终结。
  • for 循环:
    for 循环这般,倒像一个人的起点、奋斗和归途。初始化的一刻,如同婴儿初降人世,带着最初的期望。条件是生命中设定的种种限制,每一次满足,它便推动着人们往前。那增量的步伐,不就是每个人日复一日的成长与变化?直至条件不再成立,循环终止——就像生命的结束。for 循环描绘了人的一生,在规则中兜兜转转,却从未逃离既定的命运。

    // for 循环实现 100+99+98+……+3+2+1
    let num_1 = 100
    let sum = 0
     
    for(let i = num_1;i>=1;i--) {
     sum += i;
    }
    console.log(sum)
  • for...in 和 for...of:
    而 for...in 和 for...of 则如同社会中的不同阶层与个体。for...in 在集合中挑选变量,仿佛某种冷静的社会筛选,逐个将你们推向命运的舞台。而 for...of 却更柔和,它给予每个变量机会,让他们在自己的领域中展示独特的意义——不管你是数字、字符串,还是某个对象,总有一次机会让你被认识。

    // for……in
    let j:string; 
    let n:any = "a b c" 
     
    for(j in n) {
      console.log(n[j])  // "a", "", "b", "", "c"
    }
    
    // for……of
    let list_1 = [1, "string", false];
     
    for (let entry of list_1) {
      console.log(entry); // 1, "string", false
    }
  • while 和 do...while 循环:
    while 循环,如同人们在追寻梦想的过程中不断努力的状态。只要条件成立,人便会不顾一切地重复做着同样的事情。至于 do...while,则更像是人们即使在看似不可能中,依然想尝试一次,哪怕失败,也要证明自己曾经努力过。

    // while
    let num_2 = 100
    let sum_2 = 0
     
    while(num_2 >=1) { 
      sum_2 = sum_2 + num_2; 
      num_2--; 
    } 
    console.log(sum_2) // 5050
    
    // do……while
    let num_3 = 100
    let sum_3 = 0
     
    do {
      sum_3 = sum_3 + num_3; 
      num_3--; 
    }
    while(num_3 >=1) 
    console.log(sum_3) // 5050
  • break 和 continue:
    至于 break 与 continue,这二者的对比更是耐人寻味。break,像极了那些放弃的时刻,明知再继续也无望,索性一刀两断,戛然而止。而 continue 则如同那些坚持不懈的人,即便遇到困境,也只选择跳过问题,再度前行。两者的分野,倒像人生态度的不同选择。

    // break
    let i:number = 1 
    while(i<=10) { 
      if (i % 5 == 0) {   
          console.log ("在 1~10 之间第一个被 5 整除的数为 : "+i) 
          break     // 找到一个后退出循环
      } 
      i++ 
    }  // 输出 5 然后程序执行结束
    
    // continue
    let num:number = 0
    let count:number = 0;
     
    for(num=0;num<=20;num++) {
      if (num % 2==0) {
          continue
      }
      count++
    }
    console.log ("0 ~20 之间的奇数个数为: "+count)    //输出10个偶数

上述代码体验链接:https://www.typescriptlang.org/zh/play/

函数

函数的存在倒有些像是旧社会的那些门第,谁家有了独门秘诀,便能自成一派,远远超出常人之上。函数也如此,将复杂的操作隐藏在背后,只留一个简洁的入口,表面简单,背后精深。而程序员不过是这幕后的操刀者,将所有的逻辑细细雕琢,方才推出这样一位“高人”。

在这无形的语言世界里,函数便是那挥刀的武士。你若是命令它“去”,它便去;你若命令它“返”,它便带着结果归来。函数声明如同战前的号令,定义则是那一场厮杀。代码,不再是混乱的块状,依托函数,理性重获秩序。

  • 定义函数——一场预谋
    所谓函数,不过是将一团杂乱无章的代码,裹在 function 之后,加上个名字,供你召唤。例如:

    function test() {
      console.log("调用函数")
    }
    test();

    这只是一个信号,一声叫喊,它没有回音。但有时候,呼唤便意味着等待结果——通过 return,函数可以带着战果返回。

  • 函数的回报
    就如老舍笔下那个弃掉余生的祥子,函数若是没有 return,它便是没有归处。return 便是归途,胜者带着战利品,败者空手而归:

    function greet(): string {
      return "Hello World";
    }
    console.log(greet());

    这回的呼唤得到了回响,一个字符串“Hello World”,从函数的深处传回了耳边。

  • 参数——送去战场的兵卒
    函数并非独自作战。你可以送去一支部队,称之为“参数”,让它在函数中行使使命。兵贵精简,过多则乱,过少则无功:

    function add(x: number, y: number): number {
      return x + y;
    }
    console.log(add(1, 2));
  • 可选与默认——兵力的调配
    若是某一兵卒尚未就位,则可以选择省去它,或给它设定一个默认去向。可选参数如同无须总是上场的边角兵,默认参数则如同待命的后援:

    function buildName(firstName: string, lastName?: string) {
      return firstName + " " + (lastName || "");
    }
    console.log(buildName("鲁迅", "先生"));
    console.log(buildName("鲁迅"));

    若无 lastName,函数便依靠默认值完成任务。

  • 剩余与匿名——放手与自我
    若是兵卒难以尽数,则以 ... 号召剩余之兵,一同踏上战场。匿名函数,如同那未署名的游侠,行侠仗义,无需显赫:

    function addNumbers(...nums: number[]) {
      return nums.reduce((sum, current) => sum + current, 0);
    }
    console.log(addNumbers(1, 2, 3, 4));
  • 递归——永恒的回音
    递归是函数的自我折返,如同那老和尚讲的故事,一层套着一层,最终又归于原点:

    function factorial(n: number): number {
      return n <= 1 ? 1 : n * factorial(n - 1);
    }
    console.log(factorial(5)); // 120

    就像讲述“从前有座山”的故事,它无尽地重复自己,直到条件满足。

  • Lambda——化繁为简
    Lambda 函数如同那把轻巧的短刀,一击而中,不见冗余。箭头函数,以其简洁,取代了繁复的传统:

    const multiply = (x: number, y: number) => x * y;
    console.log(multiply(10, 20)); // 200

    如同短小的诗句,言简意赅,击中要害。


在这 TypeScript 的世界,函数便如江湖侠客,时而孤独行走,时而携手作战,变化多端却又井然有序。TypeScript里的知识点,不外乎是代码的剪影,但其中映射的,却是我们生活中的各种哲理。

上述代码体验链接:https://www.typescriptlang.org/zh/play/

参考资料

*以上文字内容几乎全部由 ChatGPT 编写创作

huqi
833 声望15 粉丝

我以为的就是我以为的?