JS基础知识回顾
# 上一章知识回顾
上一章的主要内容是小米商城
跟着视频一起操作,做完之后,最好自己再实现一次(直接用设计原稿自己实现)
- 主要是熟悉CSS
- 精通有点难度,但是不需要太过于纠结(对于初学者同学来说,性价比不高)
# 本章学习指导
# 数据的表达
变量
var i = 1;
var i = "haha";
var 声明的变量没有块级作用域
var 声明会进行提升
let 变量
const 常量
最好能使用const,就使用const声明变量
ESM模块化 通过export导出变量的时候,会出现问题 有些人会把导出变量写成一个函数
const name = () => "jack";
export name;
name();
还有TS书写习惯的问题
let n1:number = 12; // ts有类型推导,number
const n2:12 = 12; // ts有类型推导缩窄,字面量类型12
const arr = [1,2,3];
const obj = {
name:'jack',
age:18
}
js中声明对象,非常简单,可以直接创建一个对象,不像传统的面向对象的语言java。。。c#,必须先创建一个类,然后从类实例化对象
其实可以分成两大类
1、先创建一个类,然后从类实例化(new)对象
2、通过原型对象来产生对象(js的class只是一个语法糖)
# JS数据类型
原始(基础)类型
number
所有语言中(采用的都是IEEE754标准),浮点数是没有办法计算精确的
后端会有long类型,这个long类型所表述的范围比number大,以前前端是表述不了这个long类型的,以前为了处理这个问题,还会专门去下载一个包,bignumber---大概...名字有点模糊了
bigint(ES2020)(ES10)为了表述64位整数的新类型
- 1000n
- 不能和常规的number做计算
- 但是可以和常规的number类型做比较
string
单引号,双引号 初学者稍微注意一下
const str = "我是'帅哥'"
sdfsdfsd${name}
字符串模板boolean true false
null: 没有
undefined: 尚未定义
symbol:符号类型,主要是为了解决对象键名不被覆盖的问题,ES6出现的新语法
const a = symbol('a'); const b = symbol('a'); const obj = { name:"aaa", name:"bbb", a:'cc', [symbol("a")]:"ddd" }
引用类型
- object
- array
- function
- 历史依赖问题 typeof null // object
什么是值,什么是引用。传递地址
const obj1 = {name:'jack'} function fn(obj){ let obj2 = obj; obj2.name = 'rose' } fn(obj1); console.log(obj1);
# 数据运算
- 算数运算(+,-,*,/, %)
- 逻辑运算 (&& || ! && || 一般都是叫做短路运算)
- 比较运算(> >= < <= == === != !==)
- 位运算(& | >> << ~)
- 其他运算符(, ; . ? 😃
# 数据流程
整个数据流程分成3中
- 顺序结构
- 分支结构
- 单分支 if
- 双分支 if...else
- 多分支 if else if ... else if ... else switch(要注意穿透的问题break)
- 循环结构
- for
- do...while
- while
# 流程切割
函数
函数是js中的一等公民
什么是函数签名,什么是参数,什么是返回值类型,什么是返回值
function fn(a, b){ return a + b; }