JS高级-尚硅谷-知识点总结(更新中)

console.log(Number(null));//0
console.log(Number(undefined));//NaN
console.log(Number(true));//1
console.log(Number(false));//0

console.log(parseInt(true));//NaN
console.log(parseInt("11true?"));//11
console.log(parseInt("true"));//NaN
console.log(parseInt(123.2));
//不是数字的非法字符串 ->NaN
//空/全是空格的字符串:->NaN
// null->0
// undefined->NaN
//true->1 false->0

P4

  1. 什么是数据
    存储在内存中代表特定信息的 本质上是01串
    数据的特点:可传递、可运算
    一切皆数据
  2. 什么是内存
    内存条通电以后产生的可存储数据的空间(临时的)
    内存产生和死亡:内存条(电路板)->通电->产生内存空间->存储数据->处理数据->断电,内存空间和数据都消失
    一个小内存的两个数据:
    内部存储的数据
    地址值
    内存分类:
    栈:全局变量/局部变量,
    堆:对象
  3. 什么是变量
    可变化的量,由变量名和变量值组成,每个变量都对应一个小内存,变量名用来找到查找对应的内存。变量值就是内存中保存的数据。
  4. 数据、内存、变量的关系‘

JS引擎如何管理内存:

  1. 内存生命周期
    分配小内存空间,得到他的使用权
    存储数据,可以反复进行操作
    释放小内存空间

  2. 释放内存
    局部变量:函数执行完释放
    对象:成为垃圾对象->由垃圾回收器回收
    P7:

  3. 什么是对象?
    多个数据的封装体
    用来保存多个数据的容器
    一个对象代表现实世界的一个事物

  4. 为什么要使用对象
    统一管理多个数据

  5. 对象的组成
    属性:属性名(字符串)和属性值(任意类型)
    方法:一种特别的属性 属性值是函数

  6. 如何访问对象内部数据
    .属性名:编码简单,有时不能用
    [属性名字符串]:通用

  7. 属性名包含特殊字符:- 空格

  8. 变量名不确定

  9. 什么是函数?
    具有特定功能的n条语句的封装体
    只有函数是可以执行的,其他类型的数据不能执行

  10. 为什么要用函数?

  11. 如何定义函数?
    在这里插入图片描述

  12. 如何执行调用函数?
    直接调用:test()
    通过对象调用:Obj.test()
    New调用:
    test.call(obj)/apply(obj)调用:临时让test成为obj的方法进行调用

回调函数:

  1. 什么函数才是回调函数?
    你定义的
    没有调用
    最终执行了
  2. 常见的回调函数?
    dom事件的回调函数
    定时器回调函数(超时定时器、循环定时器)
    Ajax请求
    生命周期回调函数

IIFE:
Immediately invoked function expression

  1. 理解:
  2. 作用
    隐藏实现
    不会污染外部命名空间

this:

  1. this是啥
    任何函数本质上都是通过对象来调用,如果没有指定,就是window。
    所有函数内部都有一个变量this ,它的值是调用当前函数的对象。
  2. 如何确定this是谁?
    如果没有指定,就是window。
    指定就是调用的对象
    test():window
    p.test():p
    new test() :新建的对象
    p.call(obj):obj

关于语句分号的问题
1.在以下两种情况下不加分号会有问题:
小括号开头的前一条语句
中方括号开头的前一条语句

函数高级

  1. 原型链
  2. 执行上下文和执行上下栈
  3. 作用域与作用域链
  4. 闭包

原型链

  1. 原形prototype

  2. 显示原形和隐式原形

  3. 原型链

  4. 探索instanceof

  5. 面试题

  6. 函数的prototype属性
    每个函数都有一个prototype属性,它默认指向Object空对象(原型对象)
    原型对象中有一个construtor指向函数对象

  7. 给原型对象添加属性(一般都是方法)
    作用:函数的所有实例对象自动拥有原型中的属性(方法)
    显式原型和隐式原型:

  8. 每个function都有一个prototype,即显式原型

  9. 每个实例对象都有一个__proto__,可称为隐式原型

  10. 对象的隐式原型的值为其对应构造函数的显式原型的值

  11. 内存结构

  12. 总结:
    函数的显式prototype属性,在函数定义时自动添加的,默认是一个空的Object对象
    对象的__proto__属性,在创建对象时自动添加的,默认值为构造函数的prototype属性
    程序员能直接操作显式原型,但不能直接操作隐式原型

在这里插入图片描述

所有函数都是Function的实例(包含Function)
Object的原型对象是原型链的尽头

  1. 读取对象的属性时,会自动到原型链中查找
  2. 设置对象的属性值时:不会查找原型链,如果当前对象中没有此属性,直接添加此属性并设置其值
  3. 方法一般定义在原型中,属性一般通过构造函数定义在对象本身上
    在这里插入图片描述

执行上下文和执行上下栈:

  1. 变量声明提升
    通过var声明的变量,在定义语句之前就可以访问到
    值:undefined

  2. 函数声明提升
    通过function声明的函数,在之前就可以直接调用
    值:函数定义(对象)

  3. 问题:变量提升和函数提升是如何实现的?
    在这里插入图片描述

  4. 代码分类:
    全局代码和函数代码

  5. 全局执行上下文:
    在执行全局代码前将window确定为全局执行上下文
    对全局数据进行预处理
    *var定义的全局变量->undefined,添加为window的属性
    *function声明的全局函数->赋值fun,添加为window的方法
    *this->赋值(window)
    *开始执行全局代码

  6. 函数执行上下文
    在调用函数,准备执行函数体之前,创建对应的函数执行上下文对象
    对局部数据进行预处理
    *形参变量->赋值(实参)->添加为执行上下文的属性
    *对局部数据进行预处理

在这里插入图片描述
在这里插入图片描述

作用域与作用域上下文的区别与联系
在这里插入图片描述

执行上下文是从属于所在的作用域的

循环遍历加监听
在这里插入图片描述

闭包

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值