表达式和语句
- 表达式一般有值
- 语句一般没有值当然也可能会有值,用来改变环境
- 值包括返回值和函数
- 1+2 表达式的值为3
- add(1,2)表达式的值是函数的返回值
- 值可以是函数本身,如console.log表达式的值就是函数本身
- console.log(3)表达式的值是undifined
回车和空格
回车和空格还有缩进在JS里面没有实际意义
但在return后面不能加回车,不然JS会在自动在return后面帮我们加上undifined
标识符
规则:
第一个字符,可以是Unicode字母或者$或者_或者中文
后面的字符,除了以上所说还可以有数字
变量名就是标识符,如:
- var $ = 9;
- var $2 = 5;
- var _ = 6;
- var 你好 = ‘hi’;
if else 语句
if(表达式){语句一}else{语句二}
{}在语句只有一句时可以省略,但不建议这样做
变态情况
if括号里的表达式一般要是三个等号(===),不然会导致无限循环
语句一里面可以嵌套if else 语句
语句二里面同样可以嵌套 if else 语句
问:如下代码最后输出的是什么?
var a = 1
if(a===2)
console.log('a')
console.log('a不等于2')
//最后在控制台输出 ‘a不等于2’,因为这里省略了‘{}’,if只把‘console.log('a')’当作其语句
//两个语句中用‘,’连结,if就会把‘ console.log('a')’和‘console.log('a不等于2')’当作其语句了
最推荐使用的写法
if(表达式){
语句
}else if(表达式){
语句
}else(表达式){
语句
}
次推荐使用的写法
fuction fn(){
if(表达式){
return 语句}
if(表达式){
return 语句
}
return 语句
}
switch 语句
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;
}
//在控制台输出"x 等于1"
case代码块之中如果没有break语句会导致不会跳出switch结构,而会一直执行下去。
switch语句部分和case语句部分,都可以使用表达式。
问号冒号表达式
如下if-else 语句可以用问号冒号表达式替代
var a = 5;
var b = 6;
if(a > b){
a++
}else{
b++
}
//会执行 b++
用问号冒号表达式写成如下代码
var a = 5;
var b = 6;
(a > b) ? a++ : b++
//会执行 b++
&&短路逻辑(逻辑与)
表达式: A&&B
B真 | B假 | |
---|---|---|
A真 | 取B为值 | 取B为值 |
A假 | 取A为值 | 取A为值 |
遇到一个值为false的就不再往下运行
即取第一个遇到的false值或者最后一个遇到的true值
||短路逻辑(逻辑或)
表达式: A||B
B真 | B假 | |
---|---|---|
A真 | 取A为值 | 取A为值 |
A假 | 取B为值 | 取B为值 |
遇到一个值为true的就不再往下运行
即取第一个遇到的true值或者最后一个遇到的false值
while循环语句
语法:
while(表达式){语句}
注:while语句里面必须有对表达式里面的变量进行更改的代码,否则会导致while无限循环进行下去
var a = 1;
while(a<10){
a++
}
do while 循环就是先执行一遍里面的语句,再对表达式进行判断比较,之后就与while循环流程一致
var a=1;
do {
a++
}while(a<10)
for循环语句
语法:
for(初始化语句;判断语句;自增或者自减){循环体}
先执行初始化语句
然后执行判断语句
如果判断为false,直接退出for循环,执行后面的语句
如果判断为true,执行循环体,然后执行自增或自减语句,进而继续执行判断语句,如此往复。
break和continue
如果只有一层循环:
break 是直接退出当前循环,执行循环以外的语句,当然也不会再进行自增自减运算。
continue 是退出当前循环,然后再进入该循环,会进行自增自减运算。
如果循环不止一层:
break是直接退出当前离它最近的一层循环,然后从它的上级循环继续开始,执行的是上级循环的自增自减运算。
continue依旧是退出当前循环,然后再进入该循环,执行该循环的自增自减运算。
label
foo:{console.log(1);
break foo;
console.log('本行不会输出')
}
console.log(2);
/*输出
1
2
*/
如下代码可以作为面试题
{
foo: 1;
}
问:上述代码是什么东西
答:上述代码在里是一个foo标签,语句是1。