当前位置: 首页 > article >正文

JS面试真题 part1

JS面试真题 part1

  • 1、说说JavaScript中的数据类型,储存上的差别
  • 2、说说你了解的js数据结构
  • 3、DOM常见的操作有哪些
  • 4、说说你对BOM的理解,常见的BOM对象你了解哪些
  • 5、== 和 === 区别,分别在什么情况使用

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的情况下,我们使用相等操作符,其他情况建议全等操作符。

http://www.kler.cn/a/293046.html

相关文章:

  • 事件循环 -- 资源总结(浏览器进程模型、事件循环机制、练习题)
  • 字符及字符串(ASCII编码系统)
  • C++20 中最优雅的那个小特性 - Ranges
  • 人脸识别技术:从算法到深度学习的全面解析
  • P8680 [蓝桥杯 2019 省 B] 特别数的和
  • 定时器(QTimer)与随机数生成器(QRandomGenerator)的应用实践——Qt(C++)
  • 基于yolov8的包装盒纸板破损缺陷测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • 【Unity】打包报错类型不存在于命名空间内
  • 算法篇_C语言实现霍夫曼编码算法
  • 科研绘图系列:R语言PCoA图(PCoA plot)
  • HarmonyOS开发实战( Beta5.0)DevEco Device Tool开发环境搭建实践
  • 卷轴模式系统源码开发之社交电商:融合传统与创新的新篇章
  • 解决职业摔跤手分类问题的算法与实现
  • Matlab 并联双振子声子晶体梁结构带隙特性研究
  • 算法训练营|图论第11天 Floyd算法 A*算法
  • 【微服务】接口的幂等性怎么设计?
  • Kubernetes 上安装 Jenkins
  • 5、Django Admin后台移除“删除所选”操作
  • 问:Java异常处理的日常?
  • 民宿小程序开发制作,开发优势分析
  • 《绝区零》全球累积收入突破1亿美金;《原神》斩获年度最佳手游大奖 | 手游和应用出海资讯
  • Linux 进程概念
  • Java笔试面试题AI答之JDBC(4)
  • 006-Sleuth(Micrometer)+ZipKin分布式链路追踪
  • Swift 运算符
  • 在 “Label Studio” 和 “Android Studio” 中,“studio”的含义