JavaScript基本语法

327 阅读3分钟

Preface

做过一段时间讲师,教了两年计算机课程。以前是一名Python教师兼开发者,现在为了恰饭找工作开始转向JavaScript的怀抱。

从这篇博客起,便是JavaScript学习的开始了。

1. 基本知识扫盲

  • 表达式(expression):或者叫值(value)。例如1 + 23'and'等皆为表达式。换句话说,等号右边的,给变量的值就是表达式,但严格地说,表达式又比变量值范围更广。
  • 语句(statement):变量+表达式即为。或者单纯定义一个空变量也行。

JavaScript是动态语言,不需要预先指定变量数据类型。

2. 什么是标识符及标识符的规则

标识符(identifier)即名称的术语化说法,包含变量名、函数名、参数名和属性名等。

标识符的规则有这么几个:

  • 第一个字符必须是字母、下划线( _ )或者$(美元符号);
  • 支持unicode字符,当然也支持中文(但别用),但建议使用字母、数字、下划线,特殊情况下可以使用$;
  • 不能与 JavaScript 关键字、保留字重名。简单说,和计算机、编程语言本身相关性极大的英文单词是保留字的可能性极大,但像apple、banana等单词就随便吧。下面是JavaScript自带保留字表。

ECMAScript保留字表

3. if...else语句

作用是执行条件判断。

流程图如下:

if..else流程图

其实就是“如果她也喜欢我,我的女朋友就是女神;否则我还是一条单身狗”。

3.1 标准if..else

推荐写法如下:

if (accept === true){
    console.log('刘亦菲是我女朋友');
}else{
    console.log('我真是个舔狗');
}

3.2 switch..case

如果你有不少后宫,你可以用switch语句来挑选。示例如下:

function whichGirlFriend(who){
    switch (who){
        case '王冰冰':
            console.log('你的女朋友是王冰冰');
            break;
        case '刘亦菲':
            console.log('你的女朋友是刘亦菲');
            break;
        case '薛凯琪':
            console.log('你的女朋友是薛凯琪');
            break;
        default:
            console.log('别yy了');
    }
}

3.3 三目运算符

要是熟练的话,还可以写三目运算符:

let a = 2;
let b = 3;

let c = 0;

// 以下两种写法完全等价

// if--else
if (a > b){
    c = a;
}else{
    c = b;
}

// 三目语句
c = (a > b) ? a : b;

4. for和while语句

作用:循环。

while

打个比方,while是手动挡,for是自动挡。

手动挡的开法:

// 常用的while语句

let n = 0;
while(n <= 100){
    n++;
    console.log(n);
}

// do...while

do{
    n++;
    console.log(n);
}while(n < 100)

日常情况下,没有使用do...while的必要,比如Python完全不支持do...while机制。

上面的代码用自动挡的开法:

for(var i = 0; i <= 100; ++i){
    console.log(i);
}

用for循环比while循环遍历数组(array)更方便。

5. break和continue

这俩是每个编程语言的标配了。

  • break:用于强制结束循环和条件判断,一般搭配if语句嵌套在for循环或while循环中。相当于一枚定时炸弹
  • continue:用于跳过当次循环,一般搭配if语句嵌套在for循环或while循环中。相当于预感到地雷要爆炸时刚好跳过。

6. label语句

搭配breakcontinue使用,标记就是在一条语句前面加个可以引用的标识符(identifier)。例子来源于MDN:

let str = '';

loop1: // label
for (let i = 0; i < 5; i++) {
  if (i === 1) {
    continue loop1;
  }
  str = str + i;
}

console.log(str);
// output: "0234"

用途一般,必要性不大。

References