JS语法详解

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 avar A是不同的

objectObject是不同的

functionFunction是不同的

空格

大部分空格没有实际意义

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

参考饥人谷资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值