22. JS语法
22. JS语法
JS语言评价
JS版本:ES6是最低要求
历史版本
ES3,IE6支持,总体评价:垃圾
ES5,总体评价,还是垃圾
ES6,大部分浏览器支持,总体评价,一半垃圾一半好
ES2019与ES6差别不大
为什么说ES6一半垃圾
因为ES不能删除以前的特性,要兼容旧网站
也就是说以前能运行的网站,以后都要能运行
对比Python3你就能知道兼容的好处:稳定
取其精华,取其糟粕,对待JS,这是我们的态度
那我们为什么还要学习这么垃圾的语言?为什么不去学更优美的语言?
一门语言的价值是由起产生的价值决定,JS是世界上使用最广的语言,JS是门槛极低的语言(只要你不学糟粕),JS是一门能产生价值的语言(虽然不美)
JS之父堆JS的评价:它的优秀之处并没原创,它的原创之处并不优秀
表达式,语句,标识符
表达式与语句
表达式
1+2表达式的值为3
add(1,2) 表达式的值为函数的返回值。只有函数才有返回值
console.log
表达式的值为函数本身
问:console.log(3)
表达式的值为多少?
答:undefined
, 3是console.log打印出来的值
语句
语句有没有值?
undefined
两者的区别
表达式一般都有值,语句可能也有可能没有
语句一般会改变环境(声明,赋值)
上面两句话并不绝对的
大小写敏感
不要写错
var a 和var A是不同的
object和Object是不同的
function和Function是不同的
具体含义后面说
空格
大部分空格没有实际意义
var a = 1 和 var a=1没有区别
加回车大部分时候也不影响
只有一个地方不能加回车,那就是return后面
标识符
标识符就是取名字的时候用到的符号
规则
第一个字符,可以是Unicode字母或者$或_或中文
后面的字符,除了上面所说,还可以有数字
变量名是标识符
注释
写代码要多写注释--放屁
注释的分类
不好的注释
把代码翻译成中文,容易忽略重要的注释
过时的注释
发泄不满的注释
好的注释
踩坑注解
为什么代码会写的这么奇怪,遇到什么bug
区块block
把代码包在一起
常常与if/for/while合用
if...else...语句
语法
if(表达式){语句1}else{语句2}
{}在语句只有一句的时候可以省略,不建议这样做
变态情况
程序员戒律
使用最没有歧义的写法
switch语句
不推荐,因为很容易用错
语法
break
大部分的时候,省略break你就完了
少部分的时候,可以利用break
问好冒号表达式
&&短路逻辑
A&&B&&C&&D取第一个假值或D,并不会取true/false
||短路逻辑
A||B||C||D取第一个真值或,并不会取true/false
总结
条件语句
if...else...
switch
A?B:C
A&&B
fn && fn()
A||B
A = A || B
while
语法
while(表达式){语句}
判断表达式的真假
当表达式为真,执行语句,执行完再判断表达式的真假
当表达式为假,执行后面的语句
其他
do...while 用得不多,自行了解
下面的代码为什么会是死循环?
答:浮点数问题
while的用法如果在初始化,判断,循环体,增长,任意一个环节出现死循环就爆掉了
for循环
语法糖
for是while循环的方便写法
方便在哪儿
语法
先执行语句1
然后判断表达式2
如果为真,执行循环体,然后执行语句3
如果为假,直接退出循环,执行后面的语句
把setTimeout当成闹钟
break
和continue
break
和continue
break跳出所有循环,如果出现嵌套循环,会跳出离它最近的循环
continue会退出当前一次循环,当成next更好理解
label语句
用的很少,面试会考
语法
面试
问:上面的东西是什么?答:label
代码块里有个label叫foo,等于1
推荐书籍
阮一峰的免费教程
你不知道的JavaScript,先买上卷,适合进阶。适合工作一年到二年的前端程序员。
最后更新于
这有帮助吗?