本文部分内容来自《你不知道的JavaScript(下卷)》,详细资料参见原书,建议支持正版

代码和语句

代码

  • 代码:代码一组特定的指令,用来指示计算机要执行哪些任务。
  • 语法:指令的格式和组合规则。

语句

  1. a = b * 2;
  2. // 这条语句描述了一个行为:计算机获取名为b的变量的值,将这个值乘以2,再将结果保存在名为a的变量中。

程序

  • 程序是多个语句的有序排列,描述了程序要执行的所有步骤

表达式

  • 表达式:对一个变量的引用。
  1. 1 + 2 // 值为3
  2. add(1, 2) // 值为函数add()的返回值
  3. console.log // 值为函数本身
  4. console.log(3) // 返回值是undefined(虽然在控制台打印的是3)

语句和表达式的区别:

  1. 表达式一般都有值,语句可能有也可能没有;
  2. 语句一般会改变环境(声明、赋值);

大小写敏感

JavaScript是大小写敏感的

  • var a 不同于 var A
  • object 不同于 Object
  • function 不同于 Function

空格

  • 大部分空格没有实际意义
  • return 后不能加「回车」,如果加「回车」,会自动在 return 后补一个 undefined

标识符

规则

  • 第一个字符可以是Unicode字母$_中文
  • 后面的字符可以是上面的字符或数字

变量名是标识符

  1. var $ = 1
  2. var _ = 2
  3. var ____ = 3
  4. var 你好 = "Hi"

注释

语法

  1. // 单行注释可以放在一句代码上方
  2. let a = 1 // 单行注释也可以放在一句代码末尾
  3. /*
  4. 这是一段多行注释
  5. 多行注释适用于需要大量解释的情况
  6. */

注释的几条原则

  • 没有注释的代码不是最优的;
  • 过多注释可能是拙劣代码的征兆;
  • 注释应该解释为什么,而非是什么
  • 如果编写的代码容易令人迷惑,注释可以解释一下实现原理;

giphy(23).gif

好的注释和坏的注释

👍好的注释

  • 踩坑注解
  • 解释代码为何如此奇怪
  • 遇到的bug

💩坏的注释

  • 把代码翻译成中文
  • 过时的注释
  • 发泄不满

条件语句

if语句

  1. /* 语法 */
  2. if (表达式) {
  3. 语句1
  4. } else if (表达式) {
  5. 语句2
  6. } else {
  7. 语句3
  8. }

switch语句

  1. /* 语法 */
  2. switch (fruit) {
  3. case "banana":
  4. /* 执行一些语句 */
  5. break;
  6. case "apple":
  7. /* 执行一些语句 */
  8. break;
  9. /* ... */
  10. }

关于break;

  • 大部分时候,不要忘了break;
  • 少部分时候,可以利用break;

问号冒号表达式

  1. /* 语法 */
  2. 表达式1 ? 表达式2 : 表达式3

&&

  • 语法

    1. A && B && C && D
    2. /* 会取第一个假值,若A、B、C都是真值则取D */
    3. /* 不会取 true/false */
  • 例如,对于 A&&B: | A && B | A === true | A === false | | —- | —- | —- | | B === true | A | B | | B === false | A | B |

  • 常用例子:
    1. console && console.log && console.log("hi")

||

  • 语法

    1. A || B || C || D
    2. /* 会取第一个真值,若A、B、C都是假值则取D */
    3. /* 不会取 true/false */
  • 常用1

    1. A || B
    2. /* 等价于 */
    3. if (!a) {
    4. b
    5. } else { }
  • 常用2

    1. a = a || 100
    2. /* 等价于 */
    3. if (a) {
    4. a = a
    5. } else {
    6. a = 100
    7. }

循环语句

while循环

  1. while (表达式) {
  2. 语句
  3. }
  • 判断表达式真假
  • 若为真:执行语句,再判断真假
  • 若为假:退出循环

for循环

  1. for (语句1; 表达式2; 语句3) {
  2. 循环体
  3. }
  • 执行语句1
  • 判断表达式2真假
  • 若为真:执行循环体+语句3
  • 若为假:退出循环

break和continue

  • break:退出整个循环
  • continue:退出当前这一次循环

label语句(标识符)

  1. foo: {
  2. console.log(1);
  3. break foo;
  4. console.log('本行不会输出');
  5. }
  6. console.log(2);
  7. /* 执行结果是输出数字1和2 */

部分资料来源:饥人谷 - 方方老师