表达式与语句
表达式
-
1+2表达式的值为3
-
add(1,2)表达式的值为函数的返回值
-
console.log表达式的值为函数本身
-
console.log(3)表达式的值为undefinde
语句
- var a = 1是一个语句
二者的区别
-
表达式一般都有值,语句可能有也可能没有
-
语句一般会改变环境(声明,赋值)
-
上面两句话并不是绝对的
大小写敏感
不要写错
-
var a和var A是不同的
-
object和Object是不同的
-
function和Function是不同的
空格
大部分空格没有实际意义
-
var a = 1和var a=1没有区别
-
加回车大部分时候也不影响
-
只有一个地方不能加回车,那就是return后面
标识符
规则
- 第一个字符,可以是Unicode字幕或$或_或中文,不能是数字,数字可以放在第二位
1. var$9 √
2. var9& ×(语法错误)
- 后面的字符,除了上面所说,还可能有数字
变量名是标识符
- var _ = 1
- var $ = 2
- var ______ = 6
- var 你好 = 'hi'
注释的分类
不好的注释
-
把代码翻译成中文,过于简单的注释
-
过时的、跟不上代码修改的注释
-
发泄不满的注释
好的注释
-
踩坑、重要的注释
-
代码写的奇怪、遇到bug的注释
区块block
把代码包在一起
{
let a = 1
let b = 2
}
- 常常与if/for/while合用
if语句
语法
-
if(表达式){语句1}else{语句2}
-
{}在语句只有一句的时候可以省略,不建议这么做
变态情况
- 表达式里可以非常变态,如a = 1
-
语句1里可以非常变态,如嵌套的if else
-
语句2里可以非常变态,如嵌套的if else
-
缩进也可以很变态,如面试题常常下套
-
没有花括号的if只管提到第一个语句
没有歧义的写法
最推荐的写法
if (表达式) {
语句
}else if (表达式) {
语句
}else {
语句
}
次推荐的写法
function fn(){
if (表达式) {
return 表达式
}
if (表达式) {
return 表达式
}
return 表达式
}
switch语句
语法
switch (fruit) {
case "banana":
//...
break;
case "apple":
//...
break;
default:
//...
}
break
-
大部分时候,省略break就成了死循环了
-
少部分时候,可以利用break
问好冒号表达式
表达式1?表达式2:表达式3
function max(a,b){
return a>b ? a: b
}
短路逻辑
&&短路逻辑
- &&B&&C&&D取第一个假值或D
- 并不会取true/false
||短路逻辑
- A||B||C||D取第一个真值或D
- 并不会取true/false
总结
条件语句
-
if...else...
-
switch
-
A?B:C
-
A&&B
-
fn&&fn()
-
A || B
-
A = A || B
while
语法
-
whlie(表达式){语句}
-
判断表达式的真假
-
当表达式为真,则执行语句,执行完再判断表达式的真假
-
当表达式为假,执行后面的语句
do...whlie
- 先执行一次语句,在判断表达式真假
for循环
for是whlie循环的方便写法
语法
- 语法
for(语句1; 表达式2; 语句3){
循环体
}
-
先执行语句1
-
然后判断表达式2
-
如为真则执行循环体,然后执行语句3
-
如为假则直接退出循环,执行后面的语句
break和continue
- break :推出所有循环
- continue :退出当前一次循环
lable语句
语法
foo: {
console.log(1);
break foo;
console.log('本行不会输出')
}
console.log(2)
//输出
1
2
面试
{
foo: 1;
}
//上面的东西是什么
//不是对象,是一个foo标签,标签的内容是1
1