1、语句
语句statement是为了完成某种任务而进行的操作, 表达式expression,是一个为了得到返回值的计算式, 语句主要为了进行某种操作,一般不需要返回值;表达式是为了得到返回值,一定会返回一个值。 语句以分号结尾,一个分号表示一个语句结束,分号前可以没有内容,视为空语句。表达式不需要分号结尾,一旦在表达式后面添加分号,则被视为语句,会产生一些无意义的语句。
2、变量
2.1 概念
变量是对值的具名引用,变量就是为值起名,然后引用这个名字,等同于引用这个值。
var a = 1;
var:变量声明命令, a:声明变量, 1:数值。 变量声明和赋值,是分开的两个步骤,上面代码合在了一起。
var a;
a // undefined
声明变量无赋值,该变量值为undefined,表示无定义。
var a = 1;
a = 'hello';
JavaScript是一种动态类型语言,变量的类型没有限制,可以随时更改类型。先赋值数值,后重新赋值字符串。
2.2 变量提升
JavaScript引擎工作方式为,先解析代码,获取所有被声明的变量,再一行一行地运行。造成的结果是,所有的变量的声明语句,会被提升到代码的头部,这就叫做变量提升(hoisting)。
3、标识符
标识符(identifier)指的是用来识别各种值的合法名称。 最常见的标识符就是变量名,以及函数名,标识符对大小写敏感,a和A是两个不同的标识符。 标识符命名规则如下:
- 第一个字符,可以是任意Unicode字母,(英文字母和其他语言的字母),美元符号($)和下划线(_)
- 第二个字符及后面的字符,除了Unicode字母、美元符号和下划线,还可以用数字0-9
4、注释
源码中被JavaScript引擎忽略的部分就叫做注释,它的作用是对代码进行解释。有两种写法:单行注释//;多行注释/* */ 。 VScode中快捷键为ctrl+?
5、区块
JavaScript使用大括号,将多个相关的语句组合在一起,成为区块(block)。 区块往往用来构成其他更复杂的语法结构:for,if,while,function等。
6、条件语句
JavaScript提供if结构和switch结构,完成条件判断,即只有满足预设的条件,才会执行相应的语句。
6.1 if结构
if结构先判断一个表达式的布尔值,根据布尔值的真伪,执行不同的语句。true表示真,false表示伪。
if (m === 3) m = m + 1;
布尔值往往由一个条件表达式产生,必须放在圆括号中,表示对表达式求值。优先采用“严格相等运算符”(===)。
6.2 if...else结构
if代码块后面,可以跟一个else代码块,表示不满足条件时,所要执行的代码。对同一个变量进行多次判断时,多个if...else语句可以连写在一起。else代码块总是与离自己最近的那个if语句配对。
if (m === 0) {
// ...
} else if (m === 1) {
// ...
} else {
// ...
}
6.3 switch结构
多个if...else连在一起使用的时候,可以转为使用更方便的switch结构。
switch(fruit) {
case "banana":
// ...
break;
case "apple":
// ...
break;
default:
// ...
需要注意,switch语句后面的表达式,与case语句后面的表达式比较运行结果时,采用严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转化。
6.4 三元运算符 ?:
JavaScript有一个三元运算符(即该运算符需要三个运算子)(?:),也可以用于逻辑判断。可以被视为if...else...的简写形式。
var myVar;
console.log(
myVar ?
'myVar has a value' :
'myVar does not have a value'
)
7.循环语句
循环语句用于重复执行某个操作,它有多种形式。
7.1 while循环
while语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。
while(条件) 语句;
7.2 for循环
for语句是循环命令的另一种形式,可以指定循环的起点、终点和终止条件。
for(初始化表达式;条件;递增表达式) {
语句
}
- 初始化表达式(initialize):确定循环变量的初始值,只在循环开始时执行一次
- 条件表达式(test):每轮循环开始时,都要执行这个条件表达式,只有值为真,才继续进行循环
- 递增表达式(increment):每轮循环的最后一个操作,通常用来递增循环变量 所有for循环,都可以改写成while循环。 for语句的三个部分(initialize、test、increment),可以省略任何一个,也可以全部省略(无限循环)。
7.3 do...while循环
do...while循环与while循环类似,唯一的区别就是先运行一次循环体,然后判断循环条件。 不管条件是否为真,do...while循环至少运行一次,这是这种结构最大的特点。
7.4 break语句和continue语句
break语句和continue语句都具有跳转作用,可以让代码不按既有顺序执行。
- break语句用于跳出代码块或循环
- continue语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环
- 如果存在多重循环,不带参数的break语句和continue语句都只针对最内层循环
7.5 标签(label)
JavaScript语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置。标签可以是任意的标识符(top)。
- 标签通常与break语句和continue语句配合使用,跳出特定的循环
- 标签也可以用于跳出代码块