Javascript面试题大全

1、JavaScript原型,原型链 ? 有什么特点?

2、eval是做什么的?

它的功能是把对应的字符串解析成JS代码并运行; 应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。

3、null,undefined 的区别?

4、写一个通用的事件侦听器函数。

 1      // event(事件)工具集,来源:github.com/markyun
 2         markyun.Event = {
 3             // 页面加载完成后
 4             readyEvent : function(fn) {
 5                 if (fn==null) {
 6                     fn=document;
 7                 }
 8                 var oldonload = window.onload;
 9                 if (typeof window.onload != ‘function‘) {
10                     window.onload = fn;
11                 } else {
12                     window.onload = function() {
13                         oldonload();
14                         fn();
15                     };
16                 }
17             },
18             // 视能力分别使用dom0||dom2||IE方式 来绑定事件
19             // 参数: 操作的元素,事件名称 ,事件处理程序
20             addEvent : function(element, type, handler) {
21                 if (element.addEventListener) {
22                     //事件类型、需要执行的函数、是否捕捉
23                     element.addEventListener(type, handler, false);
24                 } else if (element.attachEvent) {
25                     element.attachEvent(‘on‘ + type, function() {
26                         handler.call(element);
27                     });
28                 } else {
29                     element[‘on‘ + type] = handler;
30                 }
31             },
32             // 移除事件
33             removeEvent : function(element, type, handler) {
34                 if (element.removeEnentListener) {
35                     element.removeEnentListener(type, handler, false);
36                 } else if (element.datachEvent) {
37                     element.detachEvent(‘on‘ + type, handler);
38                 } else {
39                     element[‘on‘ + type] = null;
40                 }
41             },
42             // 阻止事件 (主要是事件冒泡,因为IE不支持事件捕获)
43             stopPropagation : function(ev) {
44                 if (ev.stopPropagation) {
45                     ev.stopPropagation();
46                 } else {
47                     ev.cancelBubble = true;
48                 }
49             },
50             // 取消事件的默认行为
51             preventDefault : function(event) {
52                 if (event.preventDefault) {
53                     event.preventDefault();
54                 } else {
55                     event.returnValue = false;
56                 }
57             },
58             // 获取事件目标
59             getTarget : function(event) {
60                 return event.target || event.srcElement;
61             },
62             // 获取event对象的引用,取到事件的所有信息,确保随时能使用event;
63             getEvent : function(e) {
64                 var ev = e || window.event;
65                 if (!ev) {
66                     var c = this.getEvent.caller;
67                     while (c) {
68                         ev = c.arguments[0];
69                         if (ev && Event == ev.constructor) {
70                             break;
71                         }
72                         c = c.caller;
73                     }
74                 }
75                 return ev;
76             }
77         };
78 ```

5、Node.js的适用场景?

高并发、聊天、实时消息推送

6、介绍js的基本数据类型。

number,string,boolean,object,undefined

7、Javascript如何实现继承?

通过原型和构造器

8、["1", "2", "3"].map(parseInt) 答案是多少?

[1, NaN, NaN] 因为 parseInt 需要两个参数 (val, radix) 但 map 传了 3 个 (element, index, array)

9、如何创建一个对象? (画出此对象的内存图)

function Person(name, age) {
  this.name = name;
  this.age = age;
  this.sing = function() { alert(this.name) }
} 

10、谈谈This对象的理解。

this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。 但是有一个总原则,那就是this指的是调用函数的那个对象。

this一般情况下:是全局对象Global。 作为方法调用,那么this就是指这个对象

11、事件、IE与火狐的事件机制有什么区别? 如何阻止冒泡?

  1. 我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。
  2. 事件处理机制:IE是事件冒泡、火狐是 事件捕获;
  3. ev.stopPropagation();

12、什么是闭包(closure),为什么要用它?

执行say667()后,say667()闭包内部变量会存在,而闭包内部函数的内部变量不会存在.使得Javascript的垃圾回收机制GC不会收回say667()所占用的资源,

因为say667()的内部函数的执行需要依赖say667()中的变量。这是对闭包作用的非常直白的描述.

 1 function say667() {
 2   // Local variable that ends up within closure
 3     var num = 666;
 4     var sayAlert = function() { alert(num); }
 5     num++;
 6     return sayAlert;
 7 }
 8
 9 var sayAlert = say667();
10 sayAlert()//执行结果应该弹出的667  

13、"use strict";是什么意思 ? 使用它的好处和坏处分别是什么?

14、如何判断一个对象是否属于某个类?

15、new操作符具体干了什么呢?

  1. 创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。
  2. 属性和方法被加入到 this 引用的对象中。
  3. 新创建的对象由 this 所引用,并且最后隐式的返回 this 。

1 var obj = {};

2 obj.__proto__ = Base.prototype;

3 Base.call(obj);

16、Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?

hasOwnProperty

17、JSON 的了解?

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小

18、js延迟加载的方式有哪些?

defer和async、动态创建DOM方式(用得最多)、按需异步载入js

19、ajax 是什么?

20、同步和异步的区别?

21、如何解决跨域问题?

jsonp、 iframe、window.name、window.postMessage、服务器上设置代理页面

22、模块化怎么做?

立即执行函数,不暴露私有成员

 1 var module1 = (function(){
 2     var _count = 0;
 3     var m1 = function(){
 4       //...
 5     };
 6     var m2 = function(){
 7       //...
 8     };
 9     return {
10       m1 : m1,
11       m2 : m2
12     };
13 })(); 

23、AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)规范区别?

24、异步加载的方式有哪些?

  1. defer,只支持IE
  2. async:
  3. 创建script,插入到DOM中,加载完毕后callBack

25、.call() 和 .apply() 的区别?

例子中用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4);

注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。

 1 function add(a,b)
 2 {
 3     alert(a+b);
 4 }
 5
 6 function sub(a,b)
 7 {
 8     alert(a-b);
 9 }
10
11 add.call(sub,3,1);  

26、Jquery与jQuery UI 有啥区别?

  • jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。
  • jQuery UI则是在jQuery的基础上,利用jQuery的扩展性,设计的插件。 提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等

27、JQuery的源码看过吗?能不能简单说一下它的实现原理?

 

28、jquery 中如何将数组转化为json字符串,然后再转化回来?

jQuery中没有提供这个功能,所以你需要先编写两个jQuery的扩展:

1 $.fn.stringifyArray = function(array) {
2     return JSON.stringify(array)
3 }
4
5 $.fn.parseArray = function(array) {
6     return JSON.parse(array)
7 } 

然后调用:

1 $("").stringifyArray(array)

29、针对 jQuery 的优化方法?

  • 基于Class的选择性的性能相对于Id选择器开销很大,因为需遍历所有DOM元素。
  • 频繁操作的DOM,先缓存起来再操作。用Jquery的链式调用更好。 比如:var str=$("a").attr("href");
        *for (var i = size; i < arr.length; i++) {}
         for 循环每一次循环都查找了数组 (arr) 的.length 属性,在开始循环的时候设置一个变量来存储这个数字,可以让循环跑得更快:
         for (var i = size, length = arr.length; i < length; i++) {}

30、JavaScript中的作用域与变量声明提升?

31、如何编写高性能的Javascript?

32、那些操作会造成内存泄漏?

内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。 垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。

如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。

setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。

闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

33、JQuery一个对象可以同时绑定多个事件,这是如何实现的?

34、documen.write和 innerHTML的区别

  • document.write只能重绘整个页面
  • innerHTML可以重绘页面的一部分
时间: 2024-10-14 23:48:02

Javascript面试题大全的相关文章

node.js面试题大全-侧重后端应用与对Node核心的理解

Node是搞后端的,不应该被被归为前端,更不应该用前端的观点去理解,去面试node开发人员.所以这份面试题大全,更侧重后端应用与对Node核心的理解. github地址: https://github.com/jimuyouyou/node-interview-questions 注: 这人本人历时一星期完成的小作品,github里面对一些关键代码还有js源文件.直接node filename.js就可查看效果. 第一个版本,写的匆忙,能力有限,欢迎拍砖补充!后面持续更新会及时发布到github

java程序员面试题大全含答案(2018--2019)

java程序员面试题大全含答案(2018--2019) 1.10道经典java面试题_实习生必问! 2.15个Java线程并发面试题和答案 3.15个高级Java多线程面试题及回答 4.2018年java分布式相关最新面试题 5.2018最新java技术面试题与答案 6.4个Spring常见面试题及答案解析 7.css面试题及答案 8.HR常问面试题总结(上) 9.HR常问面试题总结(下) 10.html面试题及答案 11.java中String类的面试题大全含答案 12.java二叉树算法面试

Javascript面试题解析

Javascript的一些面试题让很多同学感到头疼,下面就根据兄弟连教育(www.lampbrother.net)毕业学员面试遇到的面试题,给大家做一个简单的分享,希望对初入职场的你们有一些帮助:Javascript面试题解析. 第一题 /* 解析: + 优先级大于 ? 此题等价于: 'Value is true' ? 'Something' : 'Nothing' 所以结果是:'Something' */ var val = 'smtg'; console.log('Value is ' +

javascript 面试题

面试题: 1.下面代码运行结果 var bl = false; $.ajax(url, { //... success: function(){ bl = true; } }); while ( !bl ) { alert( bl ); } alert( bl ); // 结果大家自己去想,这道题是面试官临时写的,简单直接,很好的考察你是否理解javascript中的运行机制,很棒的一道面试题 2.扩展Array原型,编写一个去除数组重复项的方法 // 算法一,两层循环,性能差 Array.pr

JAVA面试题大全(高级)

1.Java中的异常处理机制的简单原理和应用. 当Java程序违反了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常.违反语义规则包括2种情况.一种是Java类库内置的语义检查.例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException.另一种情况就是Java允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常.所有的异常都是java.lang.Tho

java面试题大全-基础方面

Java基础方面: 1.作用域public,private,protected,以及不写时的区别答:区别如下:作用域           当前类       同一package  子孙类       其他packagepublic            √              √                  √             √protected        √              √                  √             ×friendly

【javascript】javascript常用函数大全

javascript函数一共可分为五类:   •常规函数   •数组函数   •日期函数   •数学函数   •字符串函数   1.常规函数   javascript常规函数包括以下9个函数:   (1)alert函数:显示一个警告对话框,包括一个OK按钮.   (2)confirm函数:显示一个确认对话框,包括OK.Cancel按钮.   (3)escape函数:将字符转换成Unicode码.   (4)eval函数:计算表达式的结果.   (5)isNaN函数:测试是(true)否(fals

一道 JavaScript 面试题

有一道 JavaScript 面试题. f = function () { return true; }; g = function () { return false; }; (function() { if (g() && [] == ![]) { f = function () { return false; }; function g() { return true; } } })(); console.info(f()); 首先看前两行 var f = function () {

JavaScript验证正则表达式大全

JavaScript验证正则表达式大全,搜集最全的JavaScript验证正则表达式,开始查看吧,这里的都是正则表达式的例子,具体和函数结合的使用方法,还请查看下篇文章<JavaScript使用正则表达式进行验证> 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r 评注