JS基础语法

158 阅读5分钟

1. 表达式和语句

JavaScript 程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。

语句(statement):是为了完成某种任务而进行的操作,比如下面就是一行赋值语句。

var a = 1 + 3;

1 + 3 叫做表达式(expression),指一个为了得到返回值的计算式。语句和表达式的区别在于,前者主要为了进行某种操作,一般情况下不需要返回值;后者则是为了得到返回值,一定会返回一个值。 凡是 JavaScript 语言中预期为值的地方,都可以使用表达式。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。

表达式不需要分号结尾。一旦在表达式后面添加分号,则 JavaScript 引擎就将表达式视为语句,这样会产生一些没有任何意义的语句。

2. 标识符

标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名,以及后面要提到的函数名。

变量名的命名规范

  • 由字母、数字、下划线、美元符号组成
  • 严格区分大小写,var a 和 var A 是两个不同的变量
  • 不能以数字开头
  • 不能是关键字、保留字,如 var、for、while
  • 变量名必须要有意义
  • 驼峰命名法:首字母小写,后面单词首字母需要大写,如:myFirstName

3. 空格

  • 大部分空格没有实际意义
  • 只有一个地方不能加回车,那就是 return 后面,加了函数调用会返回一个 undefined

4. 区块

JavaScript使用大括号,将多个相关的语句组合在一起,称为“区块”。常常与 if / for / while 合用

{
    把代码包在一起
    let a = 1;
    let b = 2;
}

5. if 语句

语法:

  • if (表达式) {语句1} else {语句2},if 结构先判断一个表达式的布尔值,然后根据布尔值的真伪,执行不同的语句。
  • 语句1和语句2里面可以嵌套if else
if (a<100){

console.log("a < 100");

} else if (a>10000){

console.log("a大于10000");

} else{

} 
  • 表达式里可以很特殊,如a=1,表示1赋值给a
  • {}在语句中只有一句的时候可以省略,不建议这样做,容易出错
a = 1;
if (a === 2)  // 这里其实有一个无形的{},条件成立了依然会执行,只会管第一句话
console.log("a");
console.log("b");

6.switch 语句

switch case 是多个 if else 嵌套的优化写法

switch(a){
    case 1:
    console.log(1);
        break;
    case 2:
    console.log(2);
        break;
    case 3:
    case 4:
    console.log(3,4);
        break;
    default:
    console.log("hi");
}

7. 问号冒号表达式

表达式 1 ? 表达式 2 : 表达式 3 // 如果表达式1为真执行表达式2,否则执行表达式3

var a = 10;
var b = 20;
a > b ? console.log(a) : console.log(b); // 20

8. && ||短路逻辑

  • &&为取假运算,从左到右依次判断,如果遇到一个假值,就返回假值,以后不再执行,全部为真返回最后一个真值;

  • || 为取真运算,从左到右依次判断,如果遇到一个真值,就返回真值,以后不再执行,全部为假返回最后一个假值。

9. while 循环

while 语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块,多用于不知道结束条件的循环

var i = 0;

while (i < 100) {
  console.log("i 当前为:" + i);
  i = i + 1;
}

10. for 循环

for 语句是循环命令的另一种形式,可以指定循环的起点、终点和终止条件。它的语法如下:

for(语句1;表达式2;语句3){
    循环体
}

执行顺序

  1. 先执行语句 1

  2. 然后判断表达式 2

  3. 如果为真,执行循环体,然后执行语句 3

  4. 如果为假,直接退出循环,执行后面的语句

11.break 和 continue

break 语句和 continue 语句都具有跳转作用,可以让代码不按既有的顺序执行。break 语句用于跳出代码块或循环。

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

当 i 执行到 3 的时候,会跳出循环,但是如果有多层循环嵌套,只跳出最近的一层循环

continue 语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。

var i = 0;

while (i < 100) {
  i++;
  if (i % 2 === 0) continue;
  console.log("i 当前为:" + i);
}

如果输入的数是偶数则跳出这次循环,不打印出来,i+1,开始下一次循环

12. label (用的非常少)

JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下。标签可以是任意的标识符,但不能是保留字,语句部分可以是任意语句。

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

label: 语句;
foo: {

console.log(1);

break foo;

console.log('本行不会输出');

}

console.log(2);
{
foo:1  // foo是一个label,语句后面有个1
}  

13. 变量声明

   var a = 1;
   
   let a = 1;
   
   const a = 1

   区别:
   
   1.var是过时的、不好用的方式
   2.let是新的,更合理的方式
   3.const是声明是必须赋值,且不能再改的方式

   let 声明[规则]
   1.遵循块作用域,即使用范围不能超出{}
   2.不能重复声明
   3.可以赋值,也可以不赋值
   4.必须先声明再使用,否则报错
   5.全局声明的let变量,不会变成window的属性
   6.for循环配合let有奇效

   const 声明[规则]
   1.跟let几乎一样
   2.只有一条不一样 : 声明时就要赋值,赋值后不能改