什么是表达式和语句
表达式
表达式是一组代码的集合,它返回一个值。
JavaScript有以下表达式类型:
- 算数: 得出一个数字, 例如 3.14159.
1+1 //会得到一个值2
- 字符串: 得出一个字符串, 例如, "Fred" 或 "234".
console.log("my " + "string") //会得到一个"my string"
- 逻辑值: 得出true或者false.
1 === 2 //会得到一个false的bool值
- 基本表达式: javascript中基本的关键字和一般表达式。
- 左值表达式: 分配给左值。
标识符的规则
- 第一个字符,可以是unicode字母或$或_或中文;
- 后面的字符,除了上面的所说,还可以有数字;
- 变量名也是标识符;
语句
笼统来说,一个语句表示执行了一个动作。
var a = 1
一些基本语句
在介绍基本语句前先介绍一个语句“block”块语句:用于组合零个或多个语句。该块由一对大括号界定来;(如下例子)
{
let a = 1
let b = 2
}
if else 语句
当指定条件为真,if 语句会执行一段语句。如果条件为假,则执行另一段语句。 语法
if (condition){
statement1
}else{
statement2
}
举例
let a = 1
if (a === 2){
console.log('a等于2')
}else{
console.log('a等于1')
} //输出值是“a等于1”
注意:一般我们会见到else if的从句结构其结构还是if else的结构不过是在里面在套了一个if else,省略了'{}'。比如:
if (condition1)
statement1
else if (condition2)
statement2
else
if (condition3)
等价于
if (condition1){
statement1
}else{
if (condition2)
statement2
} else{
if (condition3)
}
不要将原始布尔值的true和false与Boolean对象的真或假混淆。任何一个值,只要它不是'falsy 值 (虚值)'即 undefined、null、 0、NaN或空字符串(""),那么无论是任何对象,即使是值为假的Boolean对象,在条件语句中都为真。
switch语句
评估一个表达式,将表达式的值与case子句匹配,并执行与该情况相关联的语句。
语法:
switch (expression) {
case value1:
// 当 expression 的结果与 value1 匹配时,执行此处语句
break;
case value2:
// 当 expression 的结果与 value2 匹配时,执行此处语句
break;
...
case valueN:
// 当 expression 的结果与 valueN 匹配时,执行此处语句
break;
default:
// 如果 expression 与上面的 value 值都不匹配,执行此处语句
break;
}
break的重要
var foo = 0;
switch (foo) {
case -1:
console.log('negative 1');
break;
case 0: // foo 的值为 0 所以匹配这里所以这一块会运行
console.log(0);
// 注意:那个没写的 break 原本在这儿
case 1: // 'case 0:' 里没有 break 语句所以这个 case 也会运行
console.log(1);
break; // 遇到了 break,所以不会再继续进入 'case 2:' 了
case 2:
console.log(2);
break;
default:
console.log('default');
}
你会看到上面这个在'case 0' 和'case 1'之间忘记加了'break',当这个'foo=0'在语句中找到了匹配的就是'case 0'后运行并不会结束还会接着运行下一个直到遇到'break语句'结束; 同样我们可以让N个case连用:
var foo = 1;
var output = 'Output: ';
switch (foo) {
case 0:
output += 'So ';
case 1:
output += 'What ';
output += 'I ';
case 2:
output += 'Do ';
default:
console.log('Please pick a number from 0 to 5!');
}
这个例子的输出就是:Output: So What I Do
while for 语句
可以在某个条件表达式为真的前提下,循环执行指定的一段代码,直到那个表达式不为真时结束循环。
while (condition){
statement
}
let i = 0
while(i<5){
console.log('i')
i = i + 1
}
这个语句的输出结构就是"0,1,2,3,4" 可以列举一个特殊的例子:
let i = 0.1
while (i !== 1){
console.log('i')
i = i+0.1
}
这会陷入死循环,因为在进行'i = 1'时我们以为会停止,其实实际上'i !== 1'他就会自己继续进行'i = i +1'一直陷入循环,这里就是应为浮点数的原因,而计算机采用浮点运算的主因就是电脑采用的二进制;这里我们不详细深究,就了解下这个死循环的原因。
for语句
于创建一个循环,它包含了三个可选的表达式,这三个表达式被包围在圆括号之中,使用分号分隔,后跟一个用于在循环中执行的语句(通常是一个块语句)。(我们也可以简单理解为是while的简化版) 语法:
for([initialization]; [condition]; [final-expression]){statement}
判别:
- 先执行initialization,在判别condition,如果为假,直接退出循环,执后面的语句;
- 如果为真,执行statement。然后执行final-expression 这里我们和while一起举例:
let i = 0.1
while (i !== 1){
console.log('i')
i = i+0.1
}
for(i = 0.1, i !== 0.1, i = i+0.1){
console.log('i')
}
两者都是循环判断,我们常用for循环,简单也好用,经常搭配brek和continue来终止循环;
break与continue
- continue 声明终止当前循环或标记循环的当前迭代中的语句执行,并在下一次迭代时继续执行循环。
- break 语句中止当前循环,switch语句或label 语句,并把程序控制流转到紧接着被中止语句后面的语句。
&& 和 || 运算符
- &&取第一个假值 语法:
expr1 && expr2
若 expr1 可转换为 true,则返回 expr2;否则,返回 expr1。
- ||取第一个真值 语法:
expr1 || expr2
若 expr1 可转换为 true,则返回 expr1;否则,返回 expr2。
事实并不只是true与false判断真假,还有其他假值比如null等都是会被转换为 false 的,这类值我们叫falsy值;
falsy 值 (虚值) 是在 Boolean 上下文中认定为 false 的值。
- null;
- NaN;
- 0;
- 空字符串("" or '' or ``);
- undefined。