基本语法
表达式与语句
- 表达式
- 1 + 2 表达式的值为 3
- add(1,2)表达式的值为函数的返回值(返回值只针对函数)
- console.log 表达式的值为函数本身
- console.log(3)表达式的值为多少? 是 undefined
- 语句
- var a = 1 是一个语句
二者的区别
大小写敏感
- 大部分回车空格没有实际意义
-
标识符
第一个字符可以是 Unicode 字母或$或_(下划线最多两个,多了会挨揍)
- 后面的字符,除了上述还可以用数字
-
注释
// 单行
- / / 多行
- 不好的注释
- 把代码翻译成中文
- 过时的注释
- 发泄不满的注释
- 好的注释
程序员戒律
- 不能相信人类
- 使用最没有歧义的写法
if…else…
语法
- if(表达式){语句 1}else{语句 2}
- 语句只有 1 句,可以省略{}
- 变态情况
a = 1; if (a === 2) console.log(“a”); console.log(“a 等于 2”);
- 省略{},if 只管下面第一句,结果为 a,后面的缩进是无效的
最推荐的写法
最推荐
if (表达式) { 语句; } else if (表达式) { 语句; } else { 语句; }
次推荐的写法
function fn() { if (表达式) {
return 表达式;
} if (表达式) {
return 表达式;
} return 表达式; }
switch 语句
- 语法
switch (参数) { case 条件1:
语句1;
break; //不写break,执行了也不停止,继续向下执行
case 条件2:
语句2;
break;
default: }
问号冒号表达式
- 表达式 1 ? 表达式 2 : 表达式 3
-
&& 短路逻辑
A && B && C && D
- 取第一个假值或 D(取到假就停,后面不执行)
-
|| 短路逻辑
A || B
- 取第一个真值或 B(取到真就停,后面不执行)
- 不取 true/false
- A = A || B (B 是保底值)
总结
图片来自杭州饥人谷教程
_while 循环和 for 循环
while 循环
- 语法
- while(表达式){语句}
- 判断表达式的真假
- 当表达式为真,执行语句,执行完再判断表达式真假
- 当表达式为假,跳出,执行后面的语句
do…while 用的不多,自己了解
let i = 0; while (i < 10) { console.log(i); i++; }
死循环
let a = 0.1; while (a !== 1) { console.log(a); a = a + 0.1; }
for 循环
- 一般用 for 不用 while
- 语法
for (语句1; 表达式2; 语句3) { 循环体; }
- 先执行语句 1
- 然后判断表达式 2(判断条件)
- 如果为真,执行循环体,然后执行语句 3
- 如果为假,直接退出循环体,执行后面的语句
- 变态例子
var/letfor (var i = 0; i < 5; i++) { setTimeout(() => {
//setTimeout作用:过一会执行,肯定在for循环之后
console.log(i);
}, 0); }
用 var —— 打印 5 个 5
for (let i = 0; i < 5; i++) { setTimeout(() => { //setTimeout作用:过一会执行,肯定在for循环之后 console.log(i); }, 0); } var 换成 let —— 打印 01234
break 和 continue
- break 退出当前循环(退出离他最近的一层)
for (var i = 0; i < 10; i++) { if (i % 2 === 1) {
console.log(i);
break;
} }
打印 1
- continue 跳过本次循环
for (var i = 0; i < 10; i++) { if (i % 2 === 1) {
console.log(i);
continue;
} }
label
- 用的很少,面试会考(概率 5%)
语法
foo: { //foo是随便一个标识符 console.log(1); break foo; console.log(“本行不会输出”); } console.log(2);
面试
{ a: 2; }
上面这个东西就是 label,值是 1