表达式和语句
- 表达式一般有值
- 语句一般没有值当然也可能会有值,用来改变环境
- 值包括返回值和函数
- 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 = 1if(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);/*输出12*/
如下代码可以作为面试题
{foo: 1;}
问:上述代码是什么东西
答:上述代码在里是一个foo标签,语句是1。
