JS的基本概念
JavaScript和HTML、CSS的区别
- HTML:提供网页的结构,提供网页中的内容
- CSS: 用来美化网页
- JavaScript: 可以用来控制网页内容,给网页增加动态的效果
数据类型
- 简单数据类型:Number、String、Boolean、Undefined、Null
- 复杂数据类型:Object
- 获取变量的类型:typeof
运算符的优先级
优先级从高到底
- () 优先级最高
- 一元运算符 ++ -- !
- 算数运算符 先* / % 后 + -
- 关系运算符 > >= < <=
- 相等运算符 == != === !==
- 逻辑运算符 先&& 后||
- 赋值运算符
作用域
- 静态作用域:可以预测代码在执行过程中如何查找标识符
- 全局作用域
- 函数作用域
- 块级作用域
变量提升
- var有变量提升
- let、const没有变量提升,提前访问会报错
- function函数可以先调用再定义
- 赋值给变量的函数无法提前调用
JS是怎么执行的
- 全局执行上下文:代码开始执行时就会创建,将其压执行栈的栈底,每个生命周期只有一份
- 函数执行上下文:当执行一个函数时,这个函数内的代码会被编译,生成变量环境、词法环境等,当函数执行结束时该执行环境从栈顶弹出
- 词法环境:基于ECMAScript代码的词法嵌套结构来定义标识符和具体变量和函数的关联。一个词法环境由环境记录器和一个可能的引用外部词法环境的空值组成
- 变量环境:变量环境和词法环境的一个不同就是前者被用来存储函数声明和变量绑定,后者只用来存储var变量绑定
- Outer:指向外部变量环境的一个指针