一、JS语言成分
JS特点
- JS是大小写敏感的
- JS的原创之处并不优秀,JS的优秀之处并非原创
- 只有函数有返回值
- JS是大小写敏感的
表达式和语句
区别
- 表达式一般都有一个值,语句没有(极少数情况下有)
- 语句一般会改变环境变量(声明、赋值)
表达式
- 1 + 2 的值为3
- add(1+2) 的值为该函数的返回值
- console.log 的值为它本身,因为没有给它任何参数
- console.log(3) 的值是它的返回值,即 undefined
语句
var a=1 是一个(声明)语句
标识符
规则
- 第一个字符可以是Unicode字母或$或_或中文
- 第二个及后面的字符还可以是数字
哪些是标识符?
- 变量名
注释
规则
- // 注释单行
- /**/ 注释多行
什么是好的注释?
- 防踩坑注释
- 代码写得奇怪,解释为什么这样写
区块
规则
把代码打包在一起
{
let a = 1;
let b = 2;
}
用法
常与if/for/while合用
二、条件判断
if 语句
规则
- if (表达式) {语句1} else {语句2}
- 若语句1只有一句,{}可以省略,因为{}默认只包含一句语句
举例
a = 1;
if(a === 2)
console.log("a等于1")
console.log("a等于2")
输出为“a等于2”,因为被省略的{}只包含第一个语句
最推荐的写法
if (表达式) {
语句
} else if (表达式) {
语句
} else {
语句
}
次推荐的写法
function fn() {
if (表达式) {
return 表达式
}
if (表达式) {
return 表达式
}
return 表达式
}
switch 语句
举例
a = 1;
switch (a) {
case 1:
case 3:
console.log("a是单数");
break;
case 2:
case 4:
console.log("a是双数");
break;
}
问号冒号表达式(三元表达式)
语法
表达式1 ? 表达式2 : 表达式3
举例
function max(a,b) {
if (a > b) {
return a;
}else
return b;
}
简化为↓
function max(a,b) {
return a>b ? a : b;
}
&& 和 || 的短路逻辑
语法
- A && B && C && D 取第一个假值或D,并不会取true/false
- A || B || C || D 取第一个真值或D,并不会取true/false
三、循环
while 循环
语法
while (表达式) {语句}
判断表达式的真假,若真,执行语句,若假,执行后面的语句,执行完后再次判断表达式的真假
举例
var a = 0.1; //初始化
while(a !==1){ //判断
console.log(a); //循环体
a = a + 0.1; //增长
}
这是一个死循环,因为浮点数不是精准的,a永远不会等于1
for 循环
语法糖
for 循环是while 循环的简便写法
语法
for (语句1;表达式;语句2) {
循环体;
}
执行顺序
- 语句1
- 表达式为真
- 循环体
- 语句2
- 表达式为真
... - 表达式为假,跳出循环,执行后面的语句
举例
for(let i=1;i<5;i++){
console.log(i);
}
打印出1,2,3,4
break 和 continue
break 跳出整个循环
for(var i=1;i<10;i++){
if(i%2===1){
break;
}
}
i等于1时跳出整个循环,break只会跳出离它最近的for循环
continue 跳过单次循环,不执行循环体
for(var i=1;i<10;i++){
if(i%2===1){
continue;
}else{
console.log(i)
}
}
打印出0,2,4,6,8,如果i为单数,则跳过单次循环;若果i为偶数,则打印出i