变量和类型
- 1.JavaScript规定了几种语言类型 解:Object String Number null undefind Boolean Symbol
- 2.JavaScript对象的底层数据结构是什么 解:JavaScript对象的底层数据结构
- 3.Symbol类型在实际开发中的应用、可手动实现一个简单的Symbol 解:Symbol 作用生成全局的唯一的一个值
let sy = Symbol('key')
let sysk = {}
sysk[sy] = 'kk'
- 4.JavaScript中的变量在内存中的具体存储形式
解:值类型存储于栈中 引用类型存储于堆中 但是引用类型的指针存储于栈中,通过栈中的指针去访问堆中存储的内容
数据在内存中的存储结构,也就是物理结构,分为两种:顺序存储结构和链式存储结构。 顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。数组就是顺序存储结构的典型代表。 链式存储结构:是把数据元素存放在内存中的任意存储单元里,也就是可以把数据存放在内存的各个位置。这些数据在内存中的地址可以是连续的,也可以是不连续的。链表就是顺序存储结构的典型代表。 和顺序存储结构不同的是,链式存储结构的数据元素之间是通过指针来连接的,我们可以通使用指针来找到某个数据元素的位置,然后对这个数据元素进行一些操作。 数组和队列都可以实现栈和链表。 - 5.基本类型对应的内置对象,以及他们之间的装箱拆箱操作 解:String Number Boolean 装箱 基本类型又叫值类型他就是一个值,没有对象的一些方法,如toString valueOf等方法在没装箱的值类型中是没有的
let ms = '辣笔小新'
装箱操作之前
ms.indexOf() // 没有这个方法
装箱:把基本数据类型转化为对应的引用数据类型的操作
let ms = new String('辣笔小新')
ms.indexOf('m')
拆箱:将引用类型对象转换为对应的值类型对象
let ms = new String('胖虎')
ms.valueOf()
-
6.理解值类型和引用类型 解:值类型 Boolean Number String null undefind Symbol 引用类型 Object
-
7.null和undefined的区别 解:null表示没有对象,即该处不应该有值。undefined 表示缺少值,即此处应该有值,但没有定义
-
8.至少可以说出三种判断JavaScript数据类型的方式,以及他们的优缺点,如何准确的判断数组类型 解:1-typeOf 只能判断值类型
2- instanceof 判断对象的某个属性是否在这个对象的原型链上
3- Object.prototype.toString.call(ms) 可以检测所有类型 -
9.出现小数精度丢失的原因,JavaScript可以存储的最大数字、最大安全数字,JavaScript处理大数字的方法、避免精度丢失的方法 解:js浮点数计算时会丢失精度,典型案例0.1+0.2 不等于0.3 浮点化成整数计算。(0.1×10+0.2×10)/10