一、语句和表达式
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语言的标识符对大小写敏感,所以a和A是两个不同的标识符。
标识符命名规则如下:
- 第一个字符,可以是任意 Unicode 字母(英文字母和其他语言的字母),以及
$和下划线_ - 第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字
0-9 - 注意:标识符不能包含星号
*/加号+/减号-/连词线—— - 中文是合法的标识符,可以用作变量名,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
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
- 再判断表达式2
- 如果判断结果为真执行循环体语句,再执行递增表达式
- 若为假,直接退出循环执行后面的语句
常态举例
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
-
continue
十、label标签
JS允许语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置
格式:label: 语句
标签可以是任意的标识符,但不能是保留字,语句部分可以是任意语句。
作用
- 标签与
break和continue配合,跳出特定的循环
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是一个标签,语句是一个1var a={foo:1}是一个对象