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
-
然后判断表达式 2
-
如果为真,执行循环体,然后执行语句 3
-
如果为假,直接退出循环,执行后面的语句
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.只有一条不一样 : 声明时就要赋值,赋值后不能改