javascript有哪些基本语法特点(javascript的常用类型)

在 JavaScript 中,语句可以采用单行形式,也可以使用一对大括号 {} 括起来的复合语句。语句之间通过语法符号(分号)进行分隔,同时某些语句也具有返回值。
常见的语句类型包括声明语句、表达式语句、分支语句、循环语句、控制结构以及其他类型的语句。
了解这些语句类型对于编写高质量的 JavaScript 代码非常重要。

表达式语句

什么是表达式?表达式是由一系列的操作符、变量、常量、函数调用,组成的代码,它可以是简单的值(数字、字符串),也可以是复杂的计算式(数学运算、函数调用),它可以计算出一个值。
2;
上面的代码是单值表达式,因为 2 是一个单值,所以它是一个单值表达式。
str = \\\'test string\\\';
详细解释一下:
  • str 是「左操作数」
  • =是「运算符」
  • ‘test string’是「右操作数」
  • ;是「语句结束符」

3 + 4 // 返回 7 \\\"Hello\\\" + \\\" \\\" + \\\"World\\\" // 返回 \\\"Hello World\\\" (5 * 10) / 2 // 返回 25 Math.pow(2, 3) // 返回 8
上面的代码是赋值表达式。
函数调用语句
JavaScript 中的函数本身就是一个变量/值,因此函数调用其实也是一个表达式:
fn();
一个函数调用也是一个表达式语句。

变量声明语句

纯粹的变量声明语句只是声明变量,并不赋值:
let abc;
但一般情况下,我们使用显示声明时,会同时赋值:
let abc = \\\'string\\\'
在引擎层面,JavaScript 是将上面的语句分为「变量声明、赋值语句」,两个不同的阶段去处理。
其中,let abc 作为变量声明,在语法解析阶段就被处理,执行环境中有了 abc 的变量名,而 abc = ‘string’ 在执行阶段处理,通过赋值操作向变量名 abc 绑定具体的值。
在JavaScript 中,所有显示声明的数据都是按这种处理方式实现的,包括 let、var、const、函数声明等。
    for (var prop in obj){  //...}
    上面代码中 var 声明的变量作用域是在函数一级,不是当前的{}语句块。
    var prop;for (prop in obj){  //...}  
    上面两个 for 循环的 var 变量声明语句,没有区别,prop 的作用域在全局。
    如果使用 let 或者 const 声明的话,变量声明是在当前语句的块级作用域中:
      for (let prop in obj){  //prop 的作用域范围}  
      分支语句
        if (condition)  statement1[else statement2];  
        当 condition 语句成立时,执行 statement1,否则执行 statement2。
        当没有 else 语句时,则 condition 条件不成立时,什么也不做。
        对于 if … else if … 语句来说,这样的格式是一种语法的变种,只不过 else 是子句中的 statement2 是一个新的、单行的 id 语句而已。
        if (condition1){  //执行} else if(){  //执行}
        相当于:
        if(condition1){  //执行} else {  if (condition2) {    //执行  }}

        循环语句

        for 循环
        for (var i=10; i<10; console.log(i), i--)
        while 循环
        while (true) ...
        do…while循环
        do ... while (true);
        流程控制「子句」
        • break 子句
        默认作用于循环语句的最内层或者整个 switch 语句,因此它不必特别指定中断语句的范围。
        如果在 for、while 等循环中使用 break,那么这表明停止一个最内层的循环,而将 break 用在 switch 语句中的话,则表明跳出 switch 语句。
        • continue 子句
        它只对循环语句有意义,它只能作用于 for、while、do…while语句中,它表示停止这一次的循环,并跳转到下一次循环迭代开始处运行。
        可以使用 continue 语句尽早清理掉一些分支。
        • return 子句
        它只能作用在一个函数内,一个函数内允许出现多个 return 子句,当函数被调用时,代码执行到第一个 return 子句,并返回它指定的值,如果没有指定返回的值,那该函数返回 undefined。
        如果函数执行到最后都没有 return 子句,函数执行到最后一行语句后,会返回 undefined 值。
        流程控制「异常」
        「异常」是与上面「子句」相反的逻辑。
        一般子句用于语句块的内部,并且是开发人员可预知的、可控制的逻辑,而异常用于一个语句块的全局,处理不可预知的、不可控制的逻辑。
        异常处理的语法结构如下:
        try {  //...} catch [(exception)]{  //...} finally {  //...}
        这个处理机制被分为三个部分:
        触发异常:使用 throw 语句可以在任何位置触发异常,由引擎内部在执行过程中触发异常;
        捕获异常:使用 try…catch 语句捕获一块代码可能发生的异常,并使用变量 exception 来指向异常的引用;
        结束处理:使用 try…finally 可以无视指定代码块中发生的异常,确保 finally 语句块中的代码总是被执行;
        在上面的逻辑中,catch(){…} 和 finally{…} 都是可选的,但至少存在一个,finally 语句块的重点是它总是在 try/catch 退出之前执行,如果在catch或finally 块处理的时候又发生的异常,那么这个异常会被抛出到更外一层的 try…catch/finally 语句中处理。
        对于开发人员来说,在使用 finally 代码块时,应该确保其中的语句可以完全且无异常地执行。如果无法确信代码中是否存在异常情况,那么应该将可能出现问题的代码移至 try 块中进行处理,以便更好地保证代码的可靠性和健壮性。

        题图由 DeepAI 生成
        内容来源于《JavaScript 语言精髓与编程实战》

        原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34552.html

        Like (0)
        小道研究的头像小道研究
        Previous 2024年4月12日
        Next 2024年4月12日

        相关推荐

        发表回复

        您的邮箱地址不会被公开。 必填项已用 * 标注