JS 的基本语法

199 阅读5分钟

一、语句和表达式

1、语句

是为了完成某种任务而进行的操作。eg. var a = 1 是一个声明语句
语句以分号结尾,一个分号就表示一个语句结束,多个语句可以写在一行内用分号隔开。

2、表达式

e'g. var a = 1 + 2

  • var命令声明变量a,然后将1 + 2的运算结果赋值给变量a
  • 1 + 2表达式,表达式的值为3

3、表达式需要注意

  • add(1,2)表达式的值为函数的返回值
  • 表达式1+2的值为3
  • console.log表达式的值为函数本身
  • console.log(3)表达式的值为undinfine,打印出来的东西是3
  • 值包含函数和返回值

4、语句和表达式的区别

  • 表达式一般都有值,语句可能有也可能没有
  • 语句一般都会改变环境(声明、赋值)
  • 上面两句话不绝对
  • 语句用分号结尾,表达式不需要
  • JS大小写敏感
  • 空格不敏感,一般都可以加空格和回车(return后不能加回车)

二、标识符

标识符(identifier)是用来识别各种值的合法名称。最常见的标识符就是变量名和函数名。JS语言的标识符对大小写敏感,所以aA是两个不同的标识符。

标识符命名规则如下:

  1. 第一个字符,可以是任意 Unicode 字母(英文字母和其他语言的字母),以及$和下划线_
  2. 第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9
  3. 注意:标识符不能包含星号*/加号+/减号-/连词线——
  4. 中文是合法的标识符,可以用作变量名,eg . var 临时变量 = 1;

三、if else 条件语句

1、语法:

if(表达式){
    语句1
}else if(表达式){
    语句2
}else{
    语句3
}

2、变态情况

  • 表达式可以变态,eg .a = 1
  • 语句1、语句2可变态,eg .嵌套中的if-else
  • 缩进也可变态,常用在面试中,eg .
a=1 
if(a===2)
console.log('a');
console.log('a是2');

最后结果是:a等于2;上面这段代码的正确缩进:

a=1
if(a===2){
    console.log('a')
}
    console.log('a是2')

注意:①=不是等于的意思,是赋值,a赋值为1; ② 逗号表示这句话没有结束,分号表示结束

3、两种推荐写法

if(表达式){
    语句1
}else if(表达式){
    语句2
}else{
    语句3
}
function fn (){
    if(表达式) { return 表达式 }
    if(表达式) { return 表达式 }
    return 表达式
}

四、switch语句

是if-else的升级版循环语句
语法举例:

var x = 1;
switch (x) {
  case 1:
    console.log('x 等于1');
    break;
  case 2:
    console.log('x 等于2');
    break;
  default:
    console.log('x 等于其他值');
}

注意:上面代码中,break语句必须要写,如果不写导致跳不出switch结构,会一直执行下去

五、 三元运算符 ? :

语法 : (条件 ? 表达式1 : 表达式2)
上面代码中,如果“条件”为true,则返回“表达式1”的值,否则返回“表达式2”的值。

举例:下面代码中,如果a可以被2整除,则a等于true,否则等于false

var a = (n % 2 === 0) ? true : false;

六、“&&”和“||”

A && B && C && D 取第一个假值或直接为D,不会取true或false

1.png
A || B || C || D 取第一个真值或D

七、while 循环语句

语法:①判断表达式的真假,②如果为真执行语句,执行完语句再次判断表达式真假 ③ 如果表达式为假执行后面的语句

while (表达式) {
  语句;
}

un'h

  • 变态举例
  • 1、while(true){ console.log('Hello, world');} //死循环,因为循环条件一直为真
  • 2、下面例子也是死循环,因为浮点数
var a=0.1
while(a!==1){
    console.log(a)
    a=a+1
}

八、for循环

while的方便写法

语法

for (语句1; 表达式2条件; 递增表达式) {
 循环体语句
}

步骤:

  1. 先执行语句1
  2. 再判断表达式2
  3. 如果判断结果为真执行循环体语句,再执行递增表达式
  4. 若为假,直接退出循环执行后面的语句

常态举例

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

上述例子中执行以后i的值为5,因为先执行循环再i++

变态举例

下面代码的打印结果为5个5

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

把上述代码的var改成了let打印结果变成0 1 2 3 4

九、break和continue

break是退出最近一次的所有循环,continue是退出当前循环

  • break

1.png

  • continue

1.png

十、label标签

JS允许语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置

格式:label: 语句

标签可以是任意的标识符,但不能是保留字,语句部分可以是任意语句。

作用

  1. 标签与breakcontinue配合,跳出特定的循环
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);
    }
  }

上面代码为一个双重循环区块,break命令后面加上了top标签(注意,top不用加引号),满足条件时,直接跳出双层循环。如果break语句后面不使用标签,则只能跳出内层循环
2. 标签也可以用于跳出代码块;下面代码执行到break foo,就会跳出区块。

foo: {
 console.log(1);
 break foo;
 console.log('本行不会输出');
}
console.log(2);
//1
//2

注意

  • {foo : 1}不是一个对象,foo是一个标签,语句是一个1
  • var a={foo:1}是一个对象