JS实战进阶笔记一

目录

一 数据类型

分类

判断

 二 相关问题

三  数据 变量 内存

四 对象

五  函数

 六  回调函数

七  IIFE

 八 函数中的this

一 数据类型

分类

(1)基本(值)类型:

String:任意字符串

Number:任意的数字

boolean: true/false

undefined: undefined

null: null
(2)对象(引用)类型
object:任意对象
Function:一种特别的对象(可以执行)
Array :一种特别的对象(数值下标,内部数据是有序的)。
 

判断


typeof:可以判断: undefined/数值/字符串/布尔值/ function,

           不能判断: null与object 、object与array

===:可以判断: undefined,null(不会自动类型转换,先比较数据类型如果两次数据类型相同再比较值,数据不同直接返回false)


instanceof:判断对象的具体类型

 二 相关问题

1、undefined 与null的区别?
  (1) undefined代表定义未赋值
   (2)null定义并赋值了,只是值为null

2.什么时候给变量赋值为null呢?
     (1)初始赋值,表明将要赋值为对象
     (2)结束前,让对象成为垃圾对象(被垃圾回收器回收)

3.严格区别变量类型与数据类型
   (1)数据的类型:基本类型和对象类型
    (2)变量的类型(变量内存值的类型)

             基本类型:保存就是基本类型的数据

             引用类型:保存的是地址值

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

    xxx是基本数据,保存的就是这个数据
    xxx是对象,保存的是对象的地址值
    xxx是一个变量,保存的xxx的内存内容(可能是基本数据,也可能是地址值)

5.关于引用变量赋值问题
   m个引用变量指向同一个对象,通过一个变量修改对象内部数据,其它所有变量看到的是修改之后的数据。

   2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一引用变量依然指向前一个对象。

6.JS引擎如何管理内存?

1.内存生命周期(内存的空间是临时的,而硬盘的空间是持久的)
    (1)分配小内存空间(声明变量和函数或创建对象时,JS引擎会自动为此分配一定大小的内存来存放对应的数据)。得到它的使用权

    (2)存储数据,可以反复进行操作

     (3)释放小内存空间:清空内存中的数据,标识内存可以再分配使用(内存不释放就不能复用)
2.释放内存
      局部变量:函数执行完自动释放
      对象:成为垃圾对象==>垃圾回收器回收

三  数据 变量 内存

(1)什么是数据?
  存储在内存中代表特定信息的东西,本质上是0101....

  数据的特点:可传递,可运算

  一切皆数据
  内存中所有操作的目标:数据

   常见运算:算术运算、逻辑运算、赋值、调用函数传参

(2)什么是内存?

   内存条通电后产生的可储存数据的空间(临时的)
   内存产生和死亡:内存条(电路版)-->通电-->产生内存空间-=>存储数据==>处理数据==>断电-->内存空间和数据都消失;

  一块小内存的2个数据:内部存储的数据和地址值
(3)内存分类
    栈:全局变量/局部变量(空间较小)

    堆:对象(空间较大)
(4)什么是变量?
    可变化的量,由变量名和变量值组成
    每个变量都对应一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的数据

(5)内存,数据,变量三者之间的关系
   内存用来存储数据的空间
   变量是内存的标识


四 对象

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

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

3.对象的组成
      属性:属性名(字符串)和属性值(任意)组成

       方法:一种特别的属性(属性值是函数)
4.如何访问对象内部数据?
  .属性名:编码简单,有时不能用

   [’属性名']:编码麻烦,能通用

5.什么时候必须使用[′属性名']的方式?

    (1)属性名包含特殊字符:- 、空格
    (2)属性名不确定

五  函数

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

2.为什么要用函数?
      提高代码复用

      便于阅读交流

3.如何定义函数?

          函数声明

          表达式
4.如何调用(执行)函数?

      t函数名():直接调用
      对象.函数名():通过对象调用

      new  函数名( ): new调用
      函数名.calL/apply(对象):临时让指定函数成为这个对象的方法进行调用

 六  回调函数

1.什么函数才是回调函数?

1)自己定义的
2)没有调用
3)但最终它执行了

常见的回调函数:

1)dom事件回调函数

2)定时器回调函数

3)ajax请求回调函数

4)生命周期回调函数

七  IIFE

全称: ImmediateLy-Invoked Function Expression(匿名函数自调用)

作用:
  1)隐藏实现
  2)不会污染外部(全局)命名空间

  3)可以用它编写js模块

 八 函数中的this

 1. this是什么?
    任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window

    所有函数内部都有一个变量this
    它的值是调用函数的当前对象

2.如何确定this的值?(假如test为函数名,p为函数对象,obj为对象)

       test( ) : window

       p.test( ): p
      new test():新创建的对象

      p.call(obj): obj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值