• 【JavaScript 从零开始】 语言核心部分----可选的分号


    Node.js很是火爆,前段待遇好的飞起。。。。

    于是我决定....

    重头开始学习JavaScript
    有些比较特别的,或者之前我们注意到,再或者容易出错
    东西我会记录下来。

    可选的分号

    和其他许多编程语言一样,JavaScript 使用分号(;)将语句分隔开的。这对增强代码的可读性和整洁性非常重要。

    缺少分割符,一条语句的结束就成了下一跳语句的开始,反之亦然。

    在JavaScript中,如果语句个独自占一行,通常可以省略语句之间的分号(程序结尾或又花括号"}"之前的分号也可以省略)。

    许多JavaSritpt程序员使用分号来明确语句的解释,即使在并不完全需要分号的时候也是如此。

    我也建议大家这样做。

    如下代码,

    a=3;
    b=4;
    //因为两条语句用两行书写,第一个分号是可以省略掉的
    a=3;b=4;
    //如果在一行,第一个分号则不能省略

    需要注意的是,JavaScript并不是所有的换行都要填补分号,只有缺少了分号就无法正确解析代码的时候,JavaScript才会填补分号。

    var a
    a
    =
    3
    console.log(a)
    //JavaScript将其解析为: 
    var a;  a=3;  console.log(a)

    看如下的例子,

    var y=x+f
    (a+b).toString()
    
    //第二行的圆括号与第一行的f 组成一个函数调用
    //JavaScript 会解析成
    
    var y=x+f(a+b).toString();

    而上面的代码本意却不是这样的。分号还是不要省略的好。

    通常来讲,如果一条语句以 "("、"[" 、"/" 、"+" 或者 “-” 开始,那么它极有可能和前一条语句在一起解析。

    以"/" 、"+" 或者 “-” 开始的语句并不常见,而以 "("、"["  开始的语句则非常常见,至少在一些JaveScript编码风格中是很普遍的。

    有些程序员喜欢保守的在语句前加上一个分号,这样哪怕之前的语句被修改了、分号被误删除了,当前语句还是会正确解析:

    var x=0 //这里省略了分号
    ;[x,x+1,x+2].forEach(console.log)//前面的分号保证了正确的语句解析

    如果当前语句和下一行语句无法合并解析,JavaScript则在第一行后填补分号,这是通用的规则,但有两个例外。

    第一个例外是在涉及return、break和continue语句的场景中。如果这三个关键字后紧跟着换行,JavaScript则会在换行处填补分号。

    例如:

    return 
    ture;
    //JavaScript会解析成:
    return ;  true;
    //而代码本意是这样的:
    return   true;

    第二个例外是在涉及"++"和"--"运算符的时候。

    这些运算符可以作为表达式的前缀,也可以当做表达式的后缀。

    如果将其用作后缀表达式,他和表达式应当咋同一行。

    否则,行尾将填补分号,同事""++或"--"将会作为下一行代码的前缀操作符并与之以前解析。

    例如:

    x
    ++
    y
    //这段代码解析为" x;++y"而不是 "x++;y" 

    最后还是提醒大家 使用分号来明确语句的解释,即使在并不完全需要分号的时候也是如此。

    如果你觉得有点用处还请推荐一下。

  • 相关阅读:
    leetcode 576. Out of Boundary Paths 、688. Knight Probability in Chessboard
    leetcode 129. Sum Root to Leaf Numbers
    leetcode 542. 01 Matrix 、663. Walls and Gates(lintcode) 、773. Sliding Puzzle 、803. Shortest Distance from All Buildings
    leetcode 402. Remove K Digits 、321. Create Maximum Number
    leetcode 139. Word Break 、140. Word Break II
    leetcode 329. Longest Increasing Path in a Matrix
    leetcode 334. Increasing Triplet Subsequence
    leetcode 403. Frog Jump
    android中webView加载H5,JS不能调用问题的解决
    通过nginx中转获取不到IP的问题解决
  • 原文地址:https://www.cnblogs.com/178mz/p/5035917.html
Copyright © 2020-2023  润新知