📔
饥人谷前端体系课程笔记
黑马程序员笔记前端面试押题前端精进
  • 课程大纲
  • Git入门
    • 3. 软件安装详解
    • 4. Mac环境搭建
    • 5. 命令行入门
    • 6. 本地仓库
    • 7. Git远程仓库-GitHub
  • HTML全解
    • 8. HTML概览
    • 9. HTML标签
    • 10. HTML重难点
    • 11. HTML实践 & 手机调试
  • CSS全解
    • 12. CSS基础
    • 13. CSS布局(上)
    • 14. CSS布局(下)
    • 15. CSS定位
    • 16. CSS动画
  • HTTP全解
    • 17. URL 是什么
    • 18. 请求和响应 & Node.js Server
  • JS全解
    • 19. JavaScript概览
    • 20. 内存图与JS世界(精品课)
    • 21. Canvas 实践—画图板
    • 22. JS语法
    • 23. JS数据类型
    • 24. JS 对象
    • 25. JS 对象分类
    • 26. JS 数组
    • 27. JS 函数
    • 28. JS 实战,会动的代码
    • 29. JS运算符
    • 30. JS总结
  • JS编程接口
    • 31. DOM编程
    • 32. 手写DOM库
    • 33. JQuery中的设计模式(上)
    • 34. JQuery中的设计模式(下)
    • 35. DOM事件与事件委托
  • 项目 前端导航站点
    • 前端导航项目笔记
  • 前后分离
    • 40. AJAX的原理
    • 41. 异步与Promise
    • 42. 跨域、CORS、JSONP
    • 43. 静态服务器
    • 44. AJAX实战:Cookie、Session
  • JS进阶MVC
    • 48. MVC(上)
    • 49. MVC(中)
    • 50. MVC(下)
  • 项目构建
    • 51. Webpack(上)
    • 52. Webpack(下)
  • 算法与数据结构
    • 62. 伪代码与流程图
  • React全解
    • 75. React起手式
    • 76. React类组件和函数组件
    • 77. Class组件详解
    • 78. 函数组件
    • 79. Hooks原理解析
    • 80. Hooks各个击破
    • 81. 精通Redux
  • Node.js
    • 84. Node.js技术架构
    • 85. 文件模块
    • 86. 单元测试之文件模块
    • 87. 调试 Node.js 程序
    • 88. 静态服务器
    • 89. 命令行翻译工具
    • 90. 操作数据库
    • 91. 数据库基础知识
    • 92. Stream 流
    • 93. child_process
    • 94. 总结
  • TypeScript
    • 112. 基础
    • 113. 泛型
  • Next.js全解
    • Next.js 上
    • Next.js 下
  • ES6精讲
    • Promise,async/await
  • 大屏可视化笔记
    • 大屏可视化项目
  • SCSS全解
    • SCSS全解
  • 拓展
    • 一次性弄懂性能优化
    • Web性能优化
由 GitBook 提供支持
在本页
  • 22. JS语法
  • JS语言评价
  • 历史版本
  • 为什么说ES6一半垃圾
  • 表达式,语句,标识符
  • 表达式与语句
  • 表达式
  • 语句
  • 两者的区别
  • 大小写敏感
  • 不要写错
  • 空格
  • 大部分空格没有实际意义
  • 标识符
  • 规则
  • 变量名是标识符
  • 注释
  • 注释的分类
  • 不好的注释
  • 好的注释
  • 区块block
  • if...else...语句
  • 语法
  • 变态情况
  • 程序员戒律
  • switch语句
  • 语法
  • 问好冒号表达式
  • &&短路逻辑
  • ||短路逻辑
  • 总结
  • 条件语句
  • while
  • 语法
  • 其他
  • for循环
  • 语法糖
  • 语法
  • break和continue
  • label语句
  • 语法
  • 面试
  • 推荐书籍

这有帮助吗?

  1. JS全解

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打印出来的值

语句

var a = 1 是一个语句

语句有没有值?

undefined

两者的区别

表达式一般都有值,语句可能也有可能没有

语句一般会改变环境(声明,赋值)

上面两句话并不绝对的

大小写敏感

不要写错

var a 和var A是不同的

object和Object是不同的

function和Function是不同的

具体含义后面说

空格

大部分空格没有实际意义

var a = 1 和 var a=1没有区别

加回车大部分时候也不影响

只有一个地方不能加回车,那就是return后面

function fn(){
    return 3
}
> undefined
fn()
> 3
function fn(){
    return  <====这里加了个回车之后,js会自动添加一个undefined
    3
}
> undefined
fn()
> undefined

标识符

标识符就是取名字的时候用到的符号

规则

第一个字符,可以是Unicode字母或者$或_或中文

后面的字符,除了上面所说,还可以有数字

变量名是标识符

var _ = 1
var $ = 2
var _______= 6
var 你好 = 'hi'
var 9$  不可以
会报uncaught SyntaxError:Invelid or unexpected token

注释

第一种://
第二种:/* 
anything
*//

写代码要多写注释--放屁

注释的分类

不好的注释

把代码翻译成中文,容易忽略重要的注释

过时的注释

发泄不满的注释

好的注释

踩坑注解

为什么代码会写的这么奇怪,遇到什么bug

区块block

把代码包在一起

{
let a = 1
let b = 2
}

常常与if/for/while合用

if...else...语句

语法

if(表达式){语句1}else{语句2}

{}在语句只有一句的时候可以省略,不建议这样做

变态情况

var a = 2
if(a = 1){ <=====问题在这儿,应该是===,这里的是意思是把1赋值给a
console.log('a是1')
}else{
console.log('a不是1')
}
>a是1
var a = 1
if(a === 2) <======如果不打花括号的话,
	console.log('a') <=======没有缩紧会只执行到这里,而不会执行下一句
  console.log('a等于2')
var a = 1
if(a === 2) 
	console.log('a')  , console.log('a等于2') <=======如果是逗号的话,undefined,这个是非常变态的面试题

程序员戒律

使用最没有歧义的写法

switch语句

不推荐,因为很容易用错

语法

switch(fruit){
case "banana":
//...
break;
case "apple":
//...
break;
default:
//...
}

break

大部分的时候,省略break你就完了

少部分的时候,可以利用break

问好冒号表达式

表达式1 ? 表达式2 : 表达式3

&&短路逻辑

A&&B&&C&&D取第一个假值或D,并不会取true/false

||短路逻辑

A||B||C||D取第一个真值或,并不会取true/false

a = a || 100 //如果a不存在,100就赋值给a,100就是保底值

总结

条件语句

if...else...

switch

A?B:C

A&&B

fn && fn()

A||B

A = A || B

while

语法

while(表达式){语句}

判断表达式的真假

当表达式为真,执行语句,执行完再判断表达式的真假

当表达式为假,执行后面的语句

其他

do...while 用得不多,自行了解

下面的代码为什么会是死循环?

var a = 0.1 <====初始化
while(a !== 1){ <====判断
	console.log(a)<====循环体
	a = a + 0.1<====增长
}

答:浮点数问题

while的用法如果在初始化,判断,循环体,增长,任意一个环节出现死循环就爆掉了

for循环

语法糖

for是while循环的方便写法

方便在哪儿

语法

for(语句1;表达式;语句3){
	循环体
}

先执行语句1

然后判断表达式2

如果为真,执行循环体,然后执行语句3

如果为假,直接退出循环,执行后面的语句

for(var i = 0; i < 5; i++){
 	setTimeout(()=>{
 	console.log(i)
 },0)
}

>5
>5
>5
>5
>5
setTimeout(fn) //过一会儿执行fn

把setTimeout当成闹钟

for(let i = 0; i < 5; i++){
 	setTimeout(()=>{
 	console.log(i)
 },0)
}

>0
>1
>2
>3
>4

break和continue

break跳出所有循环,如果出现嵌套循环,会跳出离它最近的循环

continue会退出当前一次循环,当成next更好理解

label语句

用的很少,面试会考

语法

foo: {
console.log(1);
break foo;
console.log('本行不会输出');
}
console.log(2);

> 1
  2

面试

{
foo:1
}

问:上面的东西是什么?答:label

foo:1
console.log(2);
 > 2
 
 {
 foo:1
 console.log(2);
 }
 
 >2
 
 {
 foo:1
 }
 

代码块里有个label叫foo,等于1

推荐书籍

阮一峰的免费教程

你不知道的JavaScript,先买上卷,适合进阶。适合工作一年到二年的前端程序员。

上一页21. Canvas 实践—画图板下一页23. JS数据类型

最后更新于3年前

这有帮助吗?