javaScript遇到的面试题

更新时间:2023-06-09 10:33:44 阅读: 评论:0

javaScript遇到的⾯试题1、JS的基本数据类型和引⽤数据类型有哪些,两者区别
  基本数据类型->string、number、Boolean、null、undefined、symbol
  引⽤数据类型->array、object、function
  基本数据类型是保存在栈内存中,操作的是值,改变源数据不会影响新的变量
  引⽤数据类型保存在堆内存中,操作的是地址,改变其中⼀个会影响另⼀个
2、数据类型中为假的有哪些?
  fal (布尔型)
  0(数值型)
  null(定义空的或者不存在,现在没有,将来可能有)
kj
  undefined(未定义,⼀直不存在)
  NaN(不是⼀个有效数字)
we are young 歌词  空字符串(空字符串,字符类型)
3、举例JavaScript的基本规范,以及如何编写⾼性能代码
  基本规范
  1)代码缩进,建议使⽤“四个空格”缩进
  2)语句结束使⽤分号
  3)变量和函数在使⽤前进⾏声明
成人教育排名
  4)以⼤写字母开头命名构造函数,全⼤写命名常量
  5)使⽤ID最好先获取⼀下
  6)规范定义JSON对象,补全双引号
  1)遵循严格模式:"u strict";
  2)将js脚本放在页⾯底部,加快渲染页⾯
  3)尽量减少使⽤闭包
  4)尽量使⽤直接量创建对象和数组
  5)尽量减少对象成员嵌套
  6)最⼩化重绘(repaint)和回流(reflow)
4、JS有哪些内置对象
  Object、Array、Boolean、Number、String、Function、Arguments、Math、Date、RegExp
  ES6新增对象:Symbol、Map、Set、Promis、Proxy
5、怎么实现string和number的相互转换
  String 转换成 Number:Number()、parInt()、parFloat()
南洋理工大学  Number 转换成 String:String()、toString()
6、怎么创建、添加、替换、克隆、删除元素英文书写格式
英语祝福语创建-> ateElement('标签名')
添加-> parent.appendChild()
parent.inrtBefore(新插⼊的元素,⽼元素)
替换-> replaceChild(new,old)
克隆-> cloneChild()
删除->removeChild()
7、什么情况下会转为字符串
  1)基于alert、confirm、document.write等输出内容时,会先把值转为字符串后在输出
  2)基于'+'进⾏字符串拼接时
  3)把复合类型值转换数字时候。⾸先会转换字符串然后再转为数字
  4)给对象设置属性名时候,如果不是字符串 先转为字符串,然后在作为属性存储到对象中(对象属
性只能是字符串和数字)  5)⼿动调⽤toString、toFixed(将 Number 四舍五⼊为指定⼩数位数的数字)、join、String⽅法时候,也是为了转换字符串
8、获取对象属性[]和.的区别
  .后⾯的是这个对象的属性,凡是⽤.的地⽅都可以⽤[]
  []中括号的内容可以是字符串也可以是变量,基本上[]放的是变量
9、null和undefined的区别
  Null:代表空对象指针。现在没有,将来可能会有
  undefined:空,未定义。现在没有,将来也不会有(Js中独有的数据类型)
10、检测数据类型的⼏种⽅式,以及他们的对⽐
  typeof、instanceof、constructor、String.call()
  typeof只针对基本数据类型,遇到引⽤数据类型是不起作⽤的(⽆法细分对象)  instanceof⽤来判断对象和函数,不适合判断字符串和数字
  constructor是Object其中的⼀个属性。默认指向实例的构造函数
  通过String⽅法,判断某个对象值属于哪种内置类型
11、in 与 hasOwnProperty
  两者都代表查看某个属性是不是⾃⼰的
  in判断的是对象的所有属性,包括对象实例及其原型的属性
  hasOwnProperty则是判断对象实例的是否具有某个属性
12、innerHTML和innerText区别
  innerHTML可以获取结构和⽂本
  innerText只获取⽂本内容
13、如何清除⼀个定时器?
  clearTimeout(timer)
14、说⼀下倒计时原理及公式
  未来时间-现在时间= 剩余时间
let d = Math.floor(t/86400);        t % =86400;
let h = Math.floor(t/3600);        t % = 3600;
let m = Math.floor(t/60);        t % = 60;
15、何时使⽤ === 何时使⽤ ==
  判断对象的属性是否存在可以使⽤双等,其余都⽤全等
  ===更严谨,不仅值相等类型也要相等,不⽤进⾏类型转换,并且⽐==速度快
16、eval 是做什么的?
  它的功能是把对应的字符串解析成JS代码并运⾏
  由JSON字符串转换为JSON对象的时候可以⽤ eval('('+ str +')');
中国翻译
  应避免使⽤eval,因为不安全,耗性能
17、数组常⽤的⼀些⽅法有哪些
push()向数组末尾添加数据
pop()删除数组最后⼀项
unshift()向数组⾸位添加新内容
shift()删除数组的第⼀项
slice()按照条件查找出其中的部分内容
splice()对数组进⾏增删改
join()⽤指定的分隔符对数组拼接
concat()⽤于连接两个或多个数组
indexOf()/lastIndexOf()当前值在数组中第⼀次/最后⼀次出现的位置索引
oyama
includes()判断⼀个数组是否包含指定的值
sort()对数组进⾏排序
rever()把数组倒过来排列
forEach()循环遍历数组每⼀项
18、说⼀下什么是DOM映射机制
  通过DOM中⽅法获取到的元素,与页⾯⼀⼀对应的这种关系称之为DOM映射
  querySelectorAll获取到的元素集合没有DOM映射,必须是元素的内置属性发⽣变化,浏览器才能监听得到
19、⼀⾏代码实现数组去重
[...newSet([1,2,3,4])]
20、节点类型都有哪些,如何判断当前节点类型
  1元素节点,2属性节点,3⽂本节点,8注释节点、9⽂档节点
  通过deType判断节点类型,其中,nodeObject为节点对象
  该属性返回以数字表⽰的节点类型,例如,元素节点返回1,属性节点返回2
21、重绘和回流(重排)区别,什么情况会触发重排和重绘
  当页⾯元素(宽⾼,位置)发⽣改变,回导致页⾯重排,浏览器会根据新位置进⾏重新渲染
  回流必将引起重绘,⽽重绘不⼀定会引起回流。重绘相对于回流性能消耗较低
  任何改变⽤来构建渲染树的信息都会导致⼀次重排或重绘
  ⽐如添加、删除、更新DOM节点,通过display: none隐藏,调整样式属性,调整窗⼝⼤⼩,滚动等等
22、如何最⼩化重绘(repaint)和回流(reflow)
  1)需要对元素进⾏复杂的操作时,可以先display:none隐藏,操作完再显⽰
  2)需要创建多个DOM节点时,使⽤DocumentFragment创建完后⼀次性的加⼊document
  3)尽量避免⽤table布局
  4)避免使⽤css表达式(expression),每次调⽤都会重新计算值(包括加载页⾯)
  5)尽量使⽤css简写,如:⽤border代替border-width,border-style, border-color
23、什么是⾃执⾏函数,⽤于什么场景
  ⾃执⾏函数,即定义和调⽤合为⼀体,⽐如匿名函数⾃执⾏
  他可以创建⼀个独⽴作⽤域,防⽌作⽤域污染,防⽌变量影响到全局,以免产⽣冲突
专业辅导机构  多⽤于框架和插件
24、改变this指向的⽅法
  call、apply、bind
  call和apply可以⾃动执⾏,bind需要⼿动调⽤,返回值为函数
as2  call和bind都有⽆数个参数,apply只有两个参数,并且第⼆个为数组

本文发布于:2023-06-09 10:33:44,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/139123.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   属性   数组
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图