学习-JS基础知识点

栏目: JavaScript · 发布时间: 6年前

内容简介:本篇文章介绍面试中经常问的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 ;判断类型是否是 numberstring ,如果是则把 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基础知识点》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Python

Programming Python

Mark Lutz / O'Reilly Media / 2006-8-30 / USD 59.99

Already the industry standard for Python users, "Programming Python" from O'Reilly just got even better. This third edition has been updated to reflect current best practices and the abundance of chan......一起来看看 《Programming Python》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具