JS面试真题 part1
1、说说JavaScript中的数据类型,储存上的差别
自己回答:
JavaScript分为基础类型和引用类型。
基础类型:boolean、number、string、null、undefined、symbol、bigInt
引用类型:数组、函数、对象、正则表达式等
基础类型储存在栈内,引用类型存在堆内,只有地址存在栈内,俩个值指向同一个地址,是共用一个堆内数据,会互相影响。
与标准差不多
2、说说你了解的js数据结构
自己回答:
- 数组
- 栈 (后进先出)
- 堆
- 队列(先进先出)
- 链表
- 树
标准回答:
补充:
- 字典 (键-值对存储)
- 散列表 (也称哈希表,储存时,键是数字,这个数字范围是0到散列表的长度)
- 图
3、DOM常见的操作有哪些
自己回答:
- 获取dom元素
- 查询dom元素
- 新建dom元素
- 修改dom元素
- 删除dom元素
标准回答:
- 创建节点:createElement、createTextNode、createDocumentFragment、createAttribute
- 添加节点:innerHTML(替换原来内容,如果原来是空,相当于添加)、appendChild、insertBefore、setAttribute
- 查询节点:querySelector、querySelectorAll
- 更新节点:innerHTML、innerText、textContent、style
- 删除节点:removeChild
4、说说你对BOM的理解,常见的BOM对象你了解哪些
自己回答:
DOM文档对象,BOM浏览器对象
常见的BOM对象:window、nav、history、screen
标准回答:
是什么:BOM是浏览器对象模型,提供了独立于内容与浏览器窗口进行交互的对象。其作用就是跟浏览器做一些交互效果,比如如何进行页面的后退,前进,刷新,浏览器的窗口变化,滚动条的滚动,以及获取客户的一些信息,如:浏览器品牌版本,屏幕分辨率
常见的BOM对象:window、location、navigator、screen、history
5、== 和 === 区别,分别在什么情况使用
自己回答:
== 值相等(等于),类型可以不同,=== 值和类型完全相同(全等)
严格要求值和类型都相等的时候使用 ===
特殊:NAN == NAN (false)NAN === NAN (false)
null==undefined (true)
标准回答:
1、等于操作符用俩个等于号表示(==),如果操作数相等,返回 true
比较前会进行隐式转换
- 如果任一个操作数式布尔值,将其转化为数值再比较
- 如果一个是字符串,一个是数值,则将字符串转成数值,再比较
- 如果一个是对象,一个不是,则调用对象的
valueOf()
方法取得原始值,如
- null==undefined (true)
- 如果任一操作符是NAN,返回false
- 如果两个操作数都是对象,则比较是不是同一个对象
总结:
- 两个都是简单类型,字符串和布尔值都会转换成数值
- 简单类型和引用类型比较,对象转化成其原始类型的值
- 两个都是引用类型,则比较它们是否指向同一个对象
- null和undefined相等
- 存在NaN则返回false
2、全等操作符用三个等于号表示(===),只有两个操作在不转换的前提下相等才返回true。即类型相同,值也相同
- null===undefined (false)
3、区别:
- 相等运算符(==)会做类型转换,再进行值的比较,全等运算符不会进行类型转换
- null和undefined比较,相等(==)为true,全等为false
- 相等运算符隐藏的类型转换,会带来一些违反直觉的结果
但在比较null的情况的时候,我们一般使用==
所以,除了比较属性为null或undefined的情况下,我们使用相等操作符,其他情况建议全等操作符。