1 表达式与语句
-
表达式一般都有值,语句可能有也可能没有,表达式 1+2 的值为3;
-
语句一般会改变环境(声明、赋值):
var a=1a就是环境; -
返回值与值不同;
-
只有函数有返回值,函数的值就是函数的返回值:
add (1,2) 表达式的值为函数的返回值;
console.log表达式的值为函数本身,即console.log;
console.log(3)表达式的值为函数的返回值,即undefined
2 JS语句特点
-
JS大小写敏感
-
大部分空格没有实际意义,只要不影响断句;
-
加回车大部分时候也不影响;
-
只有一个地方不能加回车,就是return后面:
function fn(){
return 3
}
fn()
返回3;
function fn(){
return 回车
3
}
fn()
返回undefined;
3 标识符
取名字时用到的符号就叫标识符,规则:
-
第一个字符,可以是字母或$或_或中文;后面的字符,除了这几个外,还可以有数字;
-
变量名是标识符;
var _=1
4 注释
-
不好的注释
- 把代码翻译成中文;
- 过时的注释;
- 发泄不满的注释;
-
好的注释
- 踩坑注解;
- 注明为什么代码会写的这么奇怪,遇到了什么bug;
5 if else 语句
5.1 语法
-
if (表达式){语句1} else {语句2}
-
{}在语句只有一句的时候可以省略,不建议这样做;
-
一个语句与一行不是一个意思,语句中间用' ;'隔开,代表是两个句子,用' ,'隔开代表是一个句子,中间没有符号,也代表两个句子;
-
变态情况:
1、省略了{},逗号和分号的区别:
5.2 写法
- 推荐使用的写法
- 次推荐写法
- switch语句
- 省略break后,执行完case2,会继续执行case4,而不是退出语句;
6 运算符
- 问号冒号表达式(三元运算符)
表达式1 ? 表达式2 :表达式3
-
&& 短路逻辑
-
A && B && C && D 取第一个假值或D;
-
并不会取true 或 false
-
-
|| 短路逻辑
- A || B || C || D 取第一个真值或D
- 并不会取true 或 false
7 while 循环
while语句没有返回值;
- 浮点数不精确
var a=0.1
while(a != 1.0){
console.log(a)
a = a + 0.1
}
此代码会造成死循环;
8 for 循环
- for循环中有setTimeout()时,先执行循环,循环完成后再执行setTimeout,当退出循环时,i===5,所以后面执行5次setTiemout的值都打印5;
- for循环在面对let时,会有单独的逻辑:每执行一次循环体,都会执行一次setTimeout;
9 break 和 continue
- break退出最近的一个for循环;
- continue退出当前一次循环,执行下一条语句,可看成是next的意思;
10 label 语句
它是一个代码块,foo是一个标签,标签里面只有一句话,这句话就是 1。
在chrome中,foo:1后面不加分号,它是一个对象,这是错误的,它本身就是一个标签。
当前面加上var a =时,就是一个对象: