JavaScript高级知识概括

基础总结深入

数据类型:

  • 分类(2大类)
  • 基本(值)类型
    ①Number: 任意数值
    ②String: 任意文本
    ③Boolean: true/false
    ④undefined: undefined
    ⑤null: null
  • 对象(引用)类型
    ①Object: 任意对象
    ②Array: 特别的对象类型(下标/内部数据有序)
    ③Function: 特别的对象类型(可执行)
  • 判断
    ①typeof:返回的是数据类型的字符串表达形式
    <1>可以区别: 数值, 字符串, 布尔值, undefined, function
    <2>不能区别: null与对象, 一般对象与数组
    ②instanceof
    <1>专门用来判断对象数据的类型: Object, Array与Function
    ③ ===
    <1>可以判断: undefined和null

undefined与null的区别?

  • undefined代表没有赋值
  • null代表赋值了, 只是值为null
  • 什么时候给变量赋值为null呢?
    ①var a = null //a将指向一个对象, 但对象此时还没有确定
    ②a = null //让a指向的对象成为垃圾对象
  • 严格区别变量类型与数据类型:
    ①js的变量本身是没有类型的, 变量的类型实际上是变量内存中数据的类型
    ②变量类型:
    <1>基本类型: 保存基本类型数据的变量
    <2>引用类型: 保存对象地址值的变量
    ③数据对象
    <1>基本类型
    <2>对象类型

什么是数据?

  • 存储于内存中代表特定信息的’东东’, 本质就是0101二进制
  • 具有可读和可传递的基本特性
  • 万物(一切)皆数据, 函数也是数据
  • 程序中所有操作的目标: 数据
    ①算术运算
    ②逻辑运算
    ③赋值
    ④调用函数传参

什么是内存?

  • 内存条通电后产生的存储空间(临时的)
  • 产生和死亡: 内存条(集成电路板)>通电>产生一定容量的存储空间==>存储各种数据==>断电==>内存全部消失
  • 内存的空间是临时的, 而硬盘的空间是持久的
  • 一块内存包含2个数据
    内部存储的数据(一般数据/地址数据)
    内存地址值数据
  • 内存分类
    ①栈: 全局变量, 局部变量 (空间较小)
    ②堆: 对象 (空间较大)

什么是变量?

  • 值可以变化的量, 由变量名与变量值组成
  • 一个变量对应一块小内存, 变量名用来查找到内存, 变量值就是内存中保存的内容

内存,数据, 变量三者之间的关系:

  • 内存是一个容器, 用来存储程序运行需要操作的数据
  • 变量是内存的标识, 我们通过变量找到对应的内存, 进而操作(读/写)内存中的数据

var a = xxx, a内存中到底保存的是什么?

  • xxx是一个基本数据
  • xxx是一个对象
  • xxx是一个变量

关于引用变量赋值问题:

  • 2个引用变量指向同一个对象, 通过一个引用变量修改对象内部数据, 另一个引用变量也看得见
  • 2个引用变量指向同一个对象,让一个引用变量指向另一个对象, 另一个引用变量还是指向原来的对象

在js调用函数时传递变量参数时, 是值传递还是引用传递?

  • 只有值传递, 没有引用传递, 传递的都是变量的值, 只是这个值可能是基本数据, 也可能是地址(引用)数据
  • 如果后一种看成是引用传递, 那就值传递和引用传递都可以有

JS引擎如何管理内存?

  • 内存生命周期
    1). 分配需要的内存
    2). 使用分配到的内存
    3). 不需要时将其释放/归还
  • 释放内存
    1).为执行函数分配的栈空间内存: 函数执行完自动释放
    2).存储对象的堆空间内存: 当内存没有引用指向时, 对象成为垃圾对象, 垃圾回收器后面就会回收释放此内存

对象详解:

  • 对象代表现实中的某个事物, 是该事物在编程中的抽象,多个数据的集合体(封装体),用于保存多个数据的容器。
  • 为什么要用对象?
    ①便于对多个数据进行统一管理
  • 对象的组成
    ①属性
    <1>代表现实事物的状态数据
    <2>由属性名和属性值组成
    <3> 属性名都是字符串类型, 属性值是任意类型
    ②方法
    <1>代表现实事物的行为数据
    <2>是特别的属性==>属性值是函数
  • 如何访问对象内部数据?
    <1>.属性名: 编码简单, 但有时不能用
    <2>[‘属性名’]: 编码麻烦, 但通用

什么时候必须使用[‘属性名’]的方式?

  • 属性名不是合法的标识名
    ①需求: 添加一个属性: content-type: text/json
  • 属性名不确定
    ①属性名不确定

函数详解:

  • 函数是具有特定功能的n条语句的封装体,只有函数是可执行的, 其它类型的数据是不可执行的。
  • 函数也是对象
  • 为什么要用函数?
    ①提高代码复用
    ②便于阅读和交流
  • 如何定义函数?
    ①函数声明
    ②表达式
function f1 () {
    // 函数声明
    console.log('f1()')
}
var f2 = function () {
    // 表达式
    console.log('f2()')
}
  • 如何调用(执行)函数?
    ①test()
    ②new test()
    ③obj.test()
    ④test.call/apply(obj)

什么函数才是回调函数?

  • 回调函数就是你定义的,你没有直接调用,但最终它执行了(在特定条件或时刻)。
  • 常见的回调函数?
    ① - DOM事件函数
    ②定时器函数
    ③ajax回调函数(后面学)
    ④生命周期回调函数(后面学)

IIEF详解:

  • 全称: Immediately-Invoked Function Expression 立即调用函数表达式
  • 别名: 匿名函数自调用
  • 作用
    ①隐藏内部实现
    ②不污染外部命名空间
(function 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值