学习-JS基础知识点
栏目: JavaScript · 发布时间: 5年前
内容简介:本篇文章介绍面试中经常问的JS基础知识点。文章中的关联问题可以在面试官问了问题后自己进行引申这些相关话题,从而引导面试官询问自己擅长的部分。后续会持续推出HTML知识点、CSS知识点、ES6知识点、JS进阶知识点、webpack知识点、react知识点、组件设计相关知识点、浏览器相关知识点、网络相关知识点、算法相关知识点等文章进行全面的知识梳理。Q: 基础类型有哪些? A: 基础类型有Q:
本篇文章介绍面试中经常问的JS基础知识点。文章中的关联问题可以在面试官问了问题后自己进行引申这些相关话题,从而引导面试官询问自己擅长的部分。后续会持续推出HTML知识点、CSS知识点、ES6知识点、JS进阶知识点、webpack知识点、react知识点、组件设计相关知识点、浏览器相关知识点、网络相关知识点、算法相关知识点等文章进行全面的知识梳理。
基础类型和对象类型
Q: 基础类型有哪些?
A: 基础类型有 number、undefined、null、bollean、string、symbol。
关联Q: 和对象类型的存储有什么区别?
关联A: 基础类型存储在栈内存中,存储的是值,是没有函数可以调用的。对象类型存储在堆内存中,存储的是地址。
关联Q: null
是对象吗?
关联A: 虽然 typeof null
输出的是 object
,但是 null
其实是基础类型。这个错误是因为JS的最初版本是32位系统,000开头代表的是对象,而 null
表示全零,所以被错误的判断为 object
typeof和instanceof
Q: typeof
能正确的判断类型吗?
A: 对于基础类型,除了 null
其余的基础类型都能正确判断类型,对于对象类型,除了函数都会显示 object
,所以不能准确区分类型。
关联Q: instanceof能正确的判断类型吗?
关联A: instanceof
可以准确的判断对象类型,因为内部机制是通过原型链来判断的。但是它不能区分基础类型,当然也可以写一个自定义类,修改 Symbol.hasInstance
属性来判断基础类型。
类型转换
Q: == 和 === 有什么区别?
A: ===
不需要进行类型转换,只有类型相同,并且值相等时返回 true
, ==
需要进行类型转换比较。
关联Q: 类型转换的规则是怎样的?
关联A: 先判断类型是否相等,如果相等就判断值是否相等;判断类型是否是 null
或者 undefined
,如果是则返回 true
;判断类型是否是 number
和 string
,如果是则把 string
转成 number
;判断类型其中一方是否是 boolean
,如果是则把 boolean
转成 number
再进行比较;判断类型其中一方是否是 object
,且另一方是 string、number、symbol
如果是则把 object
转成原始类型在进行比较。对象转原始类型会调用内置的 Symbol.toPrimitive
函数。
this
Q: 如何正确判断this?
A: this的绑定规则有四种:默认绑定、隐式绑定、硬绑定、new绑定。new绑定的优先级最高,然后是硬绑定,然后是隐式绑定,最后是默认绑定。
关联Q: 箭头函数的this是什么?
关联A: 箭头函数的 this
取决于包裹箭头函数的第一个普通函数的 this
。
闭包
Q: 什么是闭包? A: 闭包就是能够访问另一个函数作用域下的变量的函数。 关联Q: 闭包有哪些使用场景? 关联A: 封装私有变量、模仿块级作用域、实现JS的模块。
深浅拷贝
Q: 浅拷贝和深拷贝是什么?
A: 浅拷贝只会拷贝所有属性值到新对象中,如果属性是对象拷贝的是地址。深拷贝会深层次的拷贝对象的值。
关联Q: 如何实现浅拷贝和深拷贝?
关联A: 浅拷贝可以通过 Object.assign
方法来实现,另外也可以通过 ...
操作符来实现。深拷贝可以通过 JSON.parse(JSON.stringify(object))
来解决,但是这个方法会忽略 undefined、symbol
,且不能序列化函数,不能解决循环引用的对象。如果拷贝的对象含有内置类型不包含函数,也可以使用 MessageChannel
来实现。
原型
Q: 如何理解原型?如何理解原型链?
A: 每当定义一个对象时,对象都会包含一些预定义的属性。其中每个函数对象都有一个 prototype
属性,这个属性指向函数的原型对象。原型链就是多个对象通过__proto__连接了起来。通过原型链可以拥有定义在其他对象中的属性和方法。
关联Q: 是不是所有函数都有prototype属性?
关联A: Function.prototype.bind()
就没有这个属性。
以上所述就是小编给大家介绍的《学习-JS基础知识点》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- vueX基础知识点笔记
- 81、flask之基础知识点
- 学习-ES6基础知识点
- redis常用知识点之基础数据类型
- 总结Entrypoint vs Cmd 基础知识点
- 关于JS的一些知识点(JS基础,纯记录)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。