JavaScript笔记 09:高级1(基础总结)

数据类型

1. 分类

基本类型

  • String:任意字符串
  • Number:任意数字
  • Boolean:true/false
  • Undefined:undefined
  • Null:null

对象类型

  • Object:任意对象
  • Function:一种特别的对象(可以调用执行)
  • Array:一种特别的对象(数值下标,内部数据是有序的)
2. 判断
  • typeof:可以判断undefined / 数值 / 字符串 / 布尔值 / function;不能区分 null与object,array与object
  • instanceof:判断对象的具体类型
  • ===:可以判断undefined / null
var a;
console.log(a, typeof a);// undefined "undefined"
console.log(a === undefined);// true

a = 3;
console.log(typeof a === "number"); // true
a = "dudu";
console.log(typeof a === "string"); // true
a = true;
console.log(typeof a === "boolean"); // true

a = null;
console.log(typeof a); // object
console.log(a === null); // true

var b1 = {
  b2: [1, 'abc', console.log],
  b3: function () {
    console.log("b3");
    return function () {
      return "太复杂了";
    }
  }
}
console.log(b1 instanceof Object); // true
console.log(b1.b2 instanceof Array, b1.b2 instanceof Object); // true true
console.log(b1.b3 instanceof Function, b1.b3 instanceof Object); // true true
console.log(typeof b1.b3 === 'function'); // true
b1.b2[2]("dudu"); // dudu
console.log(b1.b3()()); // b3 太复杂了
3. 相关问题

undefined 与 null 的区别

undefined 代表定义未赋值,null 代表定义且赋值为null

var a;
console.log(a);// undefined
a = null;
console.log(a);// null

什么时候给变量赋值为null

初始赋值,表明变量将要被赋值为对象
结束前赋值,便于进行垃圾回收

var b = null;
b = [1, "dudu"];
b = null;

严格区分变量类型与数据类型

数据的类型:基本类型,对象类型
变量的类型(变量内存值的类型):基本类型:保存的是基本类型数据;引用类型:保存的是地址值

数据,变量与内存

1. 什么是数据?
  • 存储在内存中代表特定信息的‘东东’,本质上是0101…
  • 数据的特点:可传递,可运算
  • 一切皆数据
  • 内存中所有操作的目标都是数据(算数运算,逻辑运算,赋值运算,运行函数)
2. 什么是内存
  • 内存条通电以后产生的可存储数据的空间(临时的)
  • 内存产生和死亡:内存条(电路板)==> 通电 ==> 产生内存空间 ==> 存储数据 ==> 处理数据 ==> 断电 ==> 内存空间和数据都消失
  • 一块小内存的2个数据:内部存储的数据,地址值数据
  • 内存分类:① 栈:全局变量和局部变量;② 堆:对象
3. 什么是变量
  • 可变化的量,由变量名和变量值组成
  • 每个变量都对应一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的内容
4. 内存,数据,变量三者之间的关系
  • 内存时一个容器,用来存储程序运行需要操作的数据
  • 变量是内存的标识,通过变量找到对应的内存,进而操作内存中的数据
5. 相关问题

关于赋值和内存的问题:var a = xxx, a内存中保底保存的是什么

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

关于引用变量赋值的问题

  • 2个引用变量指向同一个对象,通过其中一个变量修改对象内部数据,另一个引用变量看到的是修改之后的数据
  • 2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一个引用变量依然指向原来的对象

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

  • 理解1:都是值(基本值或地址值)传递
  • 理解2:可能是值传递也可能是引用传递(传递的是地址值)

JS 引擎如何进行内存管理

  • 内存生命周期:
    1. 分配小内存空间,得到使用权
    2. 存储数据,可以反复进行操作
    3. 释放小内存空间
  • 释放内存
    1. 局部变量:函数执行完自动释放
    2. 对象:成为垃圾对象 ==> 由垃圾回收器回收

对象

1. 什么是对象
  • 多个数据的封装体
  • 用来保存多个数据的容器
  • 一个对象代表现实世界中的一个事物,是该事物在编程中的抽象
2. 为什么要用对象
  • 统一管理多个数据
3. 对象的组成
  • 属性:属性名(字符串) + 属性值(任意类型)
  • 方法:一种特殊的属性(属性值是函数)
4. 如何访问对象内部数据
  • 对象.属性名:编码简单,有时不能用
  • 对象[属性名字符串]:编码复杂,可以通用

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

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

函数

1. 什么是函数
  • 实现特定功能的 n 条语句的封装体
  • 只有函数是可以执行的,其他类型的数据不能执行
2. 为什么要用函数
  • 提高代码复用
  • 便于阅读交流
3. 如何定义函数
  • 函数声明:function f(params) { }
  • 表达式:var f = function (params) { }
4. 如何调用(执行)函数
  • 直接调用:f()
  • 通过对象调用:obj.f()
  • new 调用:new f()
  • call 或 apply 调用:f.call/apply(obj) 临时让 f 成为 obj 的方法来调用
5. 回调函数

什么函数才是回调函数

  • 你定义的
  • 你没有调用
  • 最终执行了(在某个时刻或某个条件下)

常见的回调函数

  • dom 事件回调函数(this 是发生事件的 dom 元素)
    document.getElementById("btn").onclick = function () {
        alert(this.innerHTML);
    };
    
  • 定时器回调函数(this 是 window)
    setTimeout(function () {
        alert("到点了!");
    }, 2 * 1000);
    
  • ajax 请求回调函数
  • 生命周期回调函数
6. IIFE
  • 立即执行函数表达式
  • 作用:① 隐藏实现;② 不会污染外部(全局)命名空间;③ 用它来编写 js 模块
(function () {
  console.log("dudu");
})();

(function () {
  var a = 3;
  function test() {
    console.log(++a);
  }
  // 可以不暴露所有函数
  function f() {
    console.log(a);
  }
  window.$ = function () {
    // 向外暴露一个全局函数
    return {
      test: test,
    };
  };
})();
$().test(); // 4
7. 函数中的 this

this 是什么

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

如何确定 this 的值

  • 任何函数本质上都是通过某个对象来调用的,如果没有直接指定,就是 window 调用
  • test() window
  • new test() 新创建的对象
  • obj.test() obj
  • test.call/apply(obj) obj
智慧档案馆建设方案旨在通过先进的信息技术和智能化手段,全面提升档案管理的效率和安全性,满足现代档案管理的需求。方案涵盖了软件、硬件、网络及安全、分布式存储、数据保护、机房建设等多个方面,确保档案馆在数字化、智能化转型中具备高效、安全、可扩展的能力。 在软件部分,智慧档案馆平台集成了档案接收、管理、保存、智能库房管理、辅助鉴定、编研、统计、内部利用、电子阅览室智能服务等功能模块。通过智能化的档案接收和管理流程,系统能够高效处理各类档案数据,支持历史数据迁移、数字化成果接收、征集档案接收等操作。智能库房管理模块通过虚拟库房、调卷归卷管理、温湿度管理等功能,确保实体档案的安全保管和高效利用。此外,系统还提供了智能辅助鉴定、编研、统计等功能,帮助档案馆实现档案的智能化管理和利用。 硬件部分则包括网络及安全设备、分布式存储、数据保护一体机、离线备份设备、机房建设等。网络及安全设备如核心交换机、汇聚交换机、下一代防火墙、终端安全管理系统等,确保了档案馆网络的高效运行和数据的安全防护。分布式存储系统通过全分布式架构和数据冗余技术,提供了高可伸缩性和高可用性,支持多副本或EC冗余机制,确保数据的安全性和快速重构。数据保护一体机和离线备份设备则通过多种备份和恢复机制,确保数据的完整性和可恢复性。机房建设部分则通过UPS、精密配电柜、精密空调、冷通道机柜等设备,确保机房的稳定运行和高效管理。 智慧档案馆建设方案不仅顺应了国家档案信息化建设的政策要求,还结合了云计算、区块链等新技术,确保了系统的先进性和安全性。通过智能化的档案管理和高效的数据保护机制,档案馆能够更好地服务于公众,提升档案利用效率,实现档案资源的共建共享。这一方案不仅是档案数字化转型的重要举措,也为未来档案馆的智能化发展奠定了坚实基础
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值