NotionNext
NotionNext
编程爱好者
/互联网从业者
/知识分享博主
认知决定态度,态度决定选择,选择决定人生

JS 语法

发布于:2022-1-6|最后更新: 2023-8-29|
type
status
date
slug
summary
tags
category
icon
password

JS版本

历史版本

  • ES3,IE6支持,很早的版本
  • ES5,和ES3 差不多
  • ES 2021与ES 6差别不大
为什么说ES6一半垃圾?
  • 因为ES不能删除以前的特性,要兼容旧网站
  • 也就是说以前能运行的网站,以后都要能运行
  • 对比Python 3 你就能知道兼容的好处:稳定
学习JS,我们要取其精华,弃其糟粕。

一门语言的价值

  • 是由其产生的价值决定
  • JS是世界上使用最广的语言
  • JS是门槛极低的语言(只要你不学糟粕)
  • JS是一门能产生价值的语言(虽然不优美)

JS评价

JS之父对JS的早期评价

  • 它的优秀之处并非原创,它的原创之处并不优秀

一些人对JS的批评

王垠
  • 很多JavaScript程序员也盲目地鄙视Java, 而其实JavaScript比Python和Ruby还要差
  • JavaScript的社区以幼稚和愚昧著称。你经常发现一些非常基本的常识,被JavaScripy’专家‘们当成了不起的发现似的,在大会上宣讲
道格拉斯(JSON之父)
  • JavaScript脚本语言一定会消失,最终被抛弃

一些人对JS的辩护

  • 世界上有两种编程语言“一种是天天挨骂的,一种是没人用的
  • JavaScript:世界上最被误解的语言

JS语法

表达式与语句

表达式
  • 1+2表达式的值为3
  • add(1,2) 表达式的值为函数的返回值
  • console.log 表达式的值为函数本身
  • console.log(3)表达式的值为 undefined
语句
  • var a = 1 是一个语句
二者的区别
  • 表达式一般都有值, 语句可能有也可能没有
  • 语句一般会改变环境(声明,赋值)
  • 上面两句话并不是绝对的
大小写敏感
  • var a 和 var A 是不同的
  • object 和 Object 是不同的
  • function 和 Function 是不同的

空格

大部分空格没有实际意义
  • var a = 1 和 var a=1 没有区别
  • 只要不影响断句,加多少空格都没关系,
  • 加回车大部分时候也不影响
  • 只有一个地方不能加回车,那就是return后面,如果加了空格,它会自动添加 undefined

标识符

规则
  • 第一个字符, 可以是Unicode 字母或 $ 或 _ 或中文
  • 后面的字符, 除了上面所说,还可以有数字
变量名是标识符
  • var _ = 1
  • var $ = 2
  • var _____ = 6 (一般不这么用,下划线最多写两个)
  • var 你好 = 'hi'

注释的分类

不好的注释
  • 把代码翻译成中文
  • 过时的注释
  • 发泄不满的注释
好的注释
  • 踩坑注解
  • 为什么代码会写得这么奇怪, 遇到什么bug

区块block

  • 把代码放在一起
  • 常常与if / for / while 合用

if 语句

语法
  • if(表达式){语句1} else {语句2}
  • {}在语句只有一句的时候可以省略,不建议这样做
表态情况
  • 表达式里可以非常变态, 如a = 1
  • 语句1里可以非常变态, 如嵌套的 if else
  • 语句2里可以非常变态,如嵌套的if else
  • 缩进也可以很变态, 如面试题常常下套
  • , 表示这句话没完 ;表示这句话完了
使用最没有歧义的写法 ------程序员戒律
最推荐的if else 写法
次推荐使用的写法

switch 语句

if ... else ... 升级版
语法
break
  • 大部分时候,省略break你就完了
  • 少部分时候,可以利用break

问号冒号表达式

又叫做三元运算符
表达式1 ? 表达式2 :表达式3
例子

短路逻辑

&& 找假
  • A && B && C && D 取第一个假值或 D
  • 并不会取 true/false
A&&B
&&
B
B
A
A
|| 找真
  • A || B || C || D 取第一个真值或 D
  • 并不会取 true/false
A || B
||
A
A
B
B
举例
a = a || 100
总结
条件语句
  • if ... else ...
  • switch
  • A ? B :C
  • A && B
  • fn && fn()
  • A || B
  • A = A || B

while 循环

语法
  • while(表达式) { 语句 }
  • 判断表达式的真假
  • 当表达式为真, 执行语句,执行完再判断表达式的真假
  • 当表达式为假, 执行后面的语句
其他
  • do ... while 用得不多
例子
注意
  • while 是没有返回值的
  • 不要写死循环

for 循环

语法糖
  • for 是while 循环的方便写法
语法
  • for(语句1 ; 表达式2 ; 语句3){
循环体
}
  • 先执行语句1
  • 然后判断表达式2
  • 如果为真,执行循环体, 然后执行语句3
  • 如果为假, 直接退出循环, 执行后面的语句

break 和 continue

  • break退出所有循环
  • break只会退出离它最近的for
  • continue退出当前一次循环

label

语法
面试
  • 上面是什么东西
  • foo是一个label,后面就是1
 
 
JS 内存图与世界前端大屏可视化制作技巧