JS语法博客
JS版本
ES6是最低要求
历史版本
ES3, IE6支持,总体评价:不推荐使用,太旧
ES5,总体评价:不推荐使用,太旧
ES 6: 大部分浏览器支持,总体评价:一半垃圾一半好
ES2019 与 ES 6 差别不大
ES6不好的地方
因为ES不能删除以前的特性,要兼容旧网站
但有一个好处:稳定
怎么面对JS
取其精华,去其糟粕
一门语言的价值
是由其产生的价值决定的
JS是世界上使用最广泛的语言
JS是门槛极低的语言
JS是一门能产生价值的语言
JS之父怎么评价JS?
它的优秀之处并非原创,它的原创之处并不优秀
但也有许多人批评JS
- 王垠
- 道格拉斯(JSON之父)
JS语法
表达式和语句
表达式
1+2 表达式的值为3
add(1,2)表达式的值为函数的返回值
console.log表达式的值为函数本身
面试常考
console.log(3)的表达式的值为多少?
错:3
正解:undefined
语句
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
区块block
把代码包在一起
{
let a=1;
let b=2;
}
常常与 if/for /while合用
if语句
语法
if(表达式){
语句1
}else{
语句2
}
{}在语句只有一句的时候可以省略,不建议这么做
变态情况
表达式里可以非常变态如 a = 1
语句1 里可以非常变态,如嵌套的 if else
语句 2 里可以非常变态,如嵌套if else
缩进也可以非常变态,如面试题常常下套
a=1
if(a === 2)
console.log('a')
console.log('a等于2')
结果是什么也没有输出
程序员戒律
使用最没有歧义的写法
最推荐是使用的写法
if(表达式){
语句
}else if(表达式){
语句
}else{
语句
}
次推荐的写法
function fn(){
if(表达式){
return 表达式
}
if (表达式){
return 表达式
}
return 表达式
}
switch语句
if … else … 升级版
switch (fruit){
case "":
//...
break;
case "":
break;
default:
//
break
}
break
大部分时候,省略break你就完了
少部分时候,可以利用break
三元表达式
表达式1 ? 表达式 2 : 表达式3
&& 短路逻辑
A && B && C &&D 取第一个假值或 D
并不会取true/false
|| 短路逻辑
A || B || C || D 取第一个真值或D
并不会取 ture / fasle
总结
条件语句
if ... else ..
switch
A ? B : C
A && B
fn && fn()
A || B
A=A || B
while循环
语法
while (表达式){
语句
}
判断表达式的真假
当表达式为真,执行语句,执行完再判断表达式的真假
当表达式为假时候,执行后面的语句
其他
do…while用的不多
for循环
语法
for 是 while循环的方便写法
语法
for(语句1;表达式2;语句3){
循环体
}
先执行语句1
然后判断表达式2
如果为真,执行循环体,然后执行语句3
如果为假,直接退出循环,执行后面的语句
break和 continue
break 退出所有循环
continue 退出当前一次循环
关于for的面试题
for(var i=0;i<5;i++){
setTimeout(()=>{
console.log(i)
},1000)
}
输出为
5
5
5
5
5
for(let i=0;i<5;i++){
setTimeout(()=>{
console.log(i)
},1000)
}
输出
0
1
2
3
4
5
参考饥人谷资料