1-JS版本
历史版本
- ES3,IE6支持,总体评价:垃圾
- ES5,总体评价:还是垃圾
- ES6,大部分浏览器支持,总体评价:一半垃圾,一半好
- ES2019与ES6差别不大
为什么说ES6一半垃圾
- 因为ES不能删除以前的特性,要兼容网站
- 也就是说以前能运行的网站,以后都要能运行
- 对比Python 3你就能知道兼容的好处:稳定
2-表达式、语句、标识符
表达式与语句
表达式
- 1+1表达式的值为3
- add(1,2)表达式的值为函数的返回值
- console.log表达式的值为函数本身
- console.log(3)表达式的值为underfired ,3只是它打印出来的东西
语句
var a=1是一个语句
二者的区别
- 表达式一般都有值,语句可能有可能没有
- 语句一般会改变环境
- 上面两句话并不是绝对的
大小写敏感
不要写错
- var a 与 var A是不同的
- object 与Object是不同的
- function 和Function是不同的
空格
大部分空格没有实际意义
- var a =1 和var a=1没有区别
- 加回车大部分时候也不影响
- 只有一个地方不能加回车,那就是return后面
标识符
规则
- 第一个字符,可以是Unicode字母 / $ /_ /中文
变量名是标识符
- var_=1
- var$= 2
- var___=6
- var 你好 ='hi'
注释的分类
不好的注释
- 把代码翻译成中文
- 过时的注释
- 发泄不满的注释
好的注释
- 踩坑注解
- 为什么代码会写得这么奇怪,遇到什么bug
3-语句
if语法
- if (表达式) {语句1} else{语句2}
- {}在语句只有一句的时候可以省略,不建议这样做
变态情况
a=1
if(a ===2) //如果a=2那就是赋值了
console.log('a')
console.log('a等于2')
使用最没有歧义的写法
最推荐使用的写法
if(表达式){
语句
}else if (表达式){
语句
}else {
语句
}
switch语句
语法
switch(fruit){
case: "banana";
//...
case:"apple";
//...
break;
default:
//...
}
break
- 大部分时候,省略break你就完了
- 少部分时候,可以利用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; //增长
}
for语句
语法糖
- for是while循环的方便写法
语法
for(语句1;表达式2;语句3){
循环体
}
break 和continue
** 退出所有循环 vs 退出当前一次循环**
label
语法
foo:{
console.log(1);
break foo;
console.log('本行不会输出');
}
console.log(2);
面试
{
foo:1
}
答案: 1
推荐书籍:《网道 JavaScript 教程》、《你不知道的 JavaScript(上卷)》
「资料来源:©饥人谷」