转载优秀文章,方便学习进步
作者:EnoYao
来源:掘金
原文地址
1. 介绍 js 的基本数据类型。
|
|
2. JavaScript 有几种类型的值?你能画一下他们的内存图吗?
涉及知识点:
- 栈:原始数据类型(Undefined、Null、Boolean、Number、String)
- 堆:引用数据类型(对象、数组和函数)
|
|
回答:
3. 什么是堆?什么是栈?它们之间有什么区别和联系?
|
|
详细资料可以参考: 《什么是堆?什么是栈?他们之间有什么区别和联系?》
4. 内部属性 [[Class]] 是什么?
|
|
5. 介绍 js 有哪些内置对象?
涉及知识点:
回答:
详细资料可以参考: 《标准内置对象的分类》 《JS 所有内置对象属性和方法汇总》
6. undefined 与 undeclared 的区别?
|
|
7. null 和 undefined 的区别?
|
|
详细资料可以参考: 《JavaScript 深入理解之 undefined 与 null》
8. 如何获取安全的 undefined 值?
|
|
9. 说几条写 JavaScript 的基本规范
|
|
10. JavaScript 原型,原型链? 有什么特点?
|
|
详细资料可以参考: 《JavaScript 深入理解之原型与原型链》
11. js 获取原型的方法?
- p.proto
- p.constructor.prototype
- Object.getPrototypeOf(p)
12. 在 js 中不同进制数字的表示方式
- 以 0X、0x 开头的表示为十六进制。
- 以 0、0O、0o 开头的表示为八进制。
- 以 0B、0b 开头的表示为二进制格式。
13. js 中整数的安全范围是多少?
|
|
14. typeof NaN 的结果是什么?
|
|
15. isNaN 和 Number.isNaN 函数的区别?
|
|
16. Array 构造函数只有一个参数值时的表现?
|
|
17. 其他值到字符串的转换规则?
|
|
18. 其他值到数字值的转换规则?
|
|
19. 其他值到布尔类型的值的转换规则?
|
|
20. {} 和 [] 的 valueOf 和 toString 的结果是什么?
|
|
21. 什么是假值对象?
|
|
22. ~ 操作符的作用?
|
|
23. 解析字符串中的数字和将字符串强制类型转换为数字的返回结果都是数字,它们之间的区别是什么?
|
|
24. +
操作符什么时候用于字符串的拼接
|
|
25. 什么情况下会发生布尔值的隐式强制类型转换?
|
|
26. || 和 && 操作符的返回值?
|
|
27. Symbol 值的强制类型转换?
|
|
28. == 操作符的强制类型转换规则?
|
|
详细资料可以参考: 《JavaScript 字符串间的比较》
29. 如何将字符串转化为数字,例如 ‘12.3b’?
|
|
详细资料可以参考: 《详解 JS 中 Number()、parseInt() 和 parseFloat() 的区别》
30. 如何将浮点数点左边的数每三位添加一个逗号,如 12000000.11 转化为『12,000,000.11』?
|
|
31. 常用正则表达式
|
|
详细资料可以参考: 《前端表单验证常用的 15 个 JS 正则表达式》 《JS 常用正则汇总》
32. 生成随机数的各种方法?
《JS - 生成随机数的方法汇总(不同范围、类型的随机数)》
33. 如何实现数组的随机排序?
|
|
详细资料可以参考: 《Fisher and Yates 的原始版》 《javascript 实现数组随机排序?》 《JavaScript 学习笔记:数组随机排序》
34. javascript 创建对象的几种方式?
|
|
详细资料可以参考: 《JavaScript 深入理解之对象创建》
35. JavaScript 继承的几种实现方式?
|
|
详细资料可以参考: 《JavaScript 深入理解之继承》
36. 寄生式组合继承的实现?
|
|
37. Javascript 的作用域链?
|
|
详细资料可以参考: 《JavaScript 深入理解之作用域链》
38. 谈谈 This 对象的理解。
|
|
- 1.第一种是函数调用模式,当一个函数不是一个对象的属性时,直接作为函数来调用时,this 指向全局对象。
- 2.第二种是方法调用模式,如果一个函数作为一个对象的方法来调用时,this 指向这个对象。
- 3.第三种是构造器调用模式,如果一个函数用 new 调用时,函数执行前会新创建一个对象,this 指向这个新创建的对象。
- 4.第四种是 apply 、 call 和 bind 调用模式,这三个方法都可以显示的指定调用函数的 this 指向。其中 apply 方法接收两个参数:一个是 this 绑定的对象,一个是参数数组。call 方法接收的参数,第一个是 this 绑定的对象,后面的其余参数是传入函数执行的参数。也就是说,在使用 call() 方法时,传递给函数的参数必须逐个列举出来。bind 方法通过传入一个对象,返回一个 this 绑定了传入对象的新函数。这个函数的 this 指向除了使用 new 时会被改变,其他情况下都不会改变。12这四种方式,使用构造器调用模式的优先级最高,然后是 apply 、 call 和 bind 调用模式,然后是方法调用模式,然后是函数调用模式。
39. eval 是做什么的?
|
|
详细资料可以参考: 《eval()》
40. 什么是 DOM 和 BOM?
|
|
详细资料可以参考: 《DOM, DOCUMENT, BOM, WINDOW 有什么区别?》 《Window 对象》 《DOM 与 BOM 分别是什么,有何关联?》 《JavaScript 学习总结(三)BOM 和 DOM 详解》
41. 写一个通用的事件侦听器函数。
|
|
详细资料可以参考: 《JS 事件模型》
42. 事件是什么?IE 与火狐的事件机制有什么区别? 如何阻止冒泡?
- 1.事件是用户操作网页时发生的交互动作,比如 click/move, 事件除了用户触发的动作外,还可以是文档加载,窗口滚动和大小调整。事件被封装成一个 event 对象,包含了该事件发生时的所有相关信息( event 的属性)以及可以对事件进行的操作( event 的方法)。
- 2.事件处理机制:IE 支持事件冒泡、Firefox 同时支持两种事件模型,也就是:事件冒泡和事件捕获。
- 3.event.stopPropagation() 或者 ie 下的方法 event.cancelBubble = true;
详细资料可以参考: 《Javascript 事件模型系列(一)事件及事件的三种模型》 《Javascript 事件模型:事件捕获和事件冒泡》
43. 三种事件模型是什么?
|
|
详细资料可以参考: 《一个 DOM 元素绑定多个事件时,先执行冒泡还是捕获》
44. 事件委托是什么?
|
|
详细资料可以参考: 《JavaScript 事件委托详解》
45. [“1”, “2”, “3”].map(parseInt) 答案是多少?
|
|
详细资料可以参考: 《为什么 [“1”, “2”, “3”].map(parseInt) 返回 [1,NaN,NaN]?》
46. 什么是闭包,为什么要用它?
|
|
详细资料可以参考: 《JavaScript 深入理解之闭包》
47. javascript 代码中的 “use strict”; 是什么意思 ? 使用它区别是什么?
相关知识点:
- 消除 Javascript 语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的 Javascript 做好铺垫。
区别:
- 1.禁止使用 with 语句。
- 2.禁止 this 关键字指向全局对象。
- 3.对象不能有重名的属性
回答:
详细资料可以参考: 《Javascript 严格模式详解》
48. 如何判断一个对象是否属于某个类?
|
|
详细资料可以参考: 《js 判断一个对象是否属于某一类》
49. instanceof 的作用?
|
|
详细资料可以参考: 《instanceof》
50. new 操作符具体干了什么呢?如何实现?
|
|
详细资料可以参考: 《new 操作符具体干了什么?》 《JavaScript 深入之 new 的模拟实现》
51. Javascript 中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
|
|
详细资料可以参考: 《Object.prototype.hasOwnProperty()》
52. 对于 JSON 的了解?
相关知识点:
回答:
详细资料可以参考: 《深入了解 JavaScript 中的 JSON 》
53. [].forEach.call($$(""),function(a){a.style.outline="1px solid #"+(~~(Math.random()(1<<24))).toString(16)}) 能解释一下这段代码的意思吗?
|
|
详细资料可以参考: 《通过一行代码学 JavaScript》
54. js 延迟加载的方式有哪些
相关知识点:
一般有以下几种方式:
- defer 属性
- async 属性
- 动态创建 DOM 方式
- 使用 setTimeout 延迟方法
- 让 JS 最后加载
回答:
详细资料可以参考: 《JS 延迟加载的几种方式》 《HTML 5 \