JS的基本语法

196 阅读3分钟

基本概念

语句(statement)

用于改变环境,进行某种操作,一般情况下没有值。 这是一行赋值语句:

var a = 1;

其中a为变量,可以被赋值。

表达式(expression)

为了得到返回值的计算式。1+2即为一个表达式。

  • 表达式一般有值,1+1的值为2
  • 只有函数才有返回值,表达式只有值。
  • add(1,2)是一个函数,调用表达式1+2。则add(1,2)表达式的值为函数的返回值。
  • console.log是一个函数表达式,值为函数本身console.log
  • console.log(3)的表达式的值为函数log(3)的返回值undefined

大小写敏感

  • 空格和回车一般情况下无实际含义,return后除外

变量

  • 变量相当于值的名字,引用该值。
  • 在没有被赋值时,变量的值为undefined

标识符(identifier)

规则

  • 第一个字符:①Unicode字母;②$;③_;④中文
  • 第二个及之后的字符:①Unicode字母;②$;③_;④中文;⑥数字

举例

正确标识符:

_
___
$1
你好
π

错误标识符:

1$
***  //标识符不能包含星号
a+   //标识符不能包含加号
a-   //标识符不能包含减号

注释

在重要处才写注释:

  • 踩坑及解决方案
  • 为什么采用这样的写法
  • bug及解决方案

区块(block)

{}内为一个区块,通常与其他语法结构共用,如if,while,for,function等。

条件语句

if结构

语法为:

if(表达式){语句}else{语句}
  • {}可以省略,else if就是省略嵌套的结果。

空格无实际含义,要用逻辑判断语句结构而非缩进。

基本形式:

if(){
    
} else if(){
    
} else{
    
}
function (){
    if (){
        return
    }
    if (){
        return
    }
    return
}

圆括号内为表达式,执行条件判断:

if (a===1)
    {
        m = m + 1;
    }

switch语句

在跳出循环时,使用break,基本形式如下:

switch(a){
    case "正数":
    case “负数”:
        break;
    case “0”:
        break;
}

每个break不能省略,如果没有break语句,则不会跳出switch结构。

问号冒号表达式 ?:

基本形式:

表达式1?表达式2:表达式3

用于简化if语句中ifelse都只有一个的情况。

&&短路逻辑

AA&&BB&&CC&&DD //取第一个假值或D

||短路逻辑

AA||BB||CC||DD //取第一个真值或D

循环语句

while语句

基本形式:

while (条件) {
  语句;
}

变态形式:

var a = 0.1
    while (!a==1){
        a = a + 0.1;
        console.log(a)
    }

由于浮点数不精确,a的值不能精确等于1,故该循环为无限循环。

for语句

基本形式

for (初始化表达式; 条件; 递增表达式) {
  语句
}

执行顺序为:

初始化表达式→条件→语句→递增表达式→条件→语句→递增表达式……

一个例子

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

执行结果为:0、1、2、3、4

for (var i = 0; i < 5; i++) {
  setTimeout (() => {
    console.log(i)},0) //在执行完毕循环语句后过一段时间再打出i的值,此时i的值为5,循环了5次,故有5个i,值都为5
  }
}

执行结果为:5、5、5、5、5

break和continue

  • break:跳出当前循环,只跳出当前这层。
  • continue:立即终止本轮循环,返回循环结构的头部,开始下一轮循环。理解为next

标签(label)

基本格式:

label:
    语句

标签通常与break语句和continue语句配合使用,跳出特定的循环。

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) break top;
      console.log('i=' + i + ', j=' + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

该代码为一个双重循环区块,break命令后面加上了top标签(注意,top不用加引号),满足条件时,直接跳出双层循环。如果break语句后面不使用标签,则只能跳出内层循环,进入下一次的外层循环。

  • 变态形式:
{
    foo: 1
}

这不是Object,其含义为:区块内有一个foo标签,内容为1。