前端面试题集锦

1.用原生JS实现jq中的trigger函数

2.Object.defineProperty

3.用JS实现观察者模式

4.JS对象的继承

5.可变数组求和,给定一个数组,a=[1,2,45,3432,112,,,343];a的元素的个数100个,也可能是10000个,试实现函数sumRange(m,n),这个函数能计算出从第m个元素至第n个元素的和。实现这个函数有个要求,当元素个数较多时,不能太耗时。

编写函数LazyMan,实现如下功能:

LazyMan('Jason').doSports('swimming').sleep(10).doWork('coding');

输出:

My name is Jason  
I am swiming
//等待10秒钟
I am coding

github地址

6.IE盒子模型与标准盒子模型

如果页面开头不标明doctype,IE会默认使用IE盒子模型

7.在浏览器输入一个url后,会发生什么事情呢?

http://www.cnblogs.com/xsilence/p/6014567.html

8.IE的事件模型与W3C的事件模型的区别

9.用过哪些框架,插件?

bootdtrap,datetimepicker,ztree,alertify.js,jwplayer,webuploader。

10.javascript的执行上下文,作用域与作用域链。

11.跨域问题的解决;

  • 使用jsonp;
  • window.name和iframe;
  • 反向代理;
  • Access-Control-Allow-Origin(cors)
  • 使用html5的window.postMessage

12.localStorage与cookie的区别?

13.https与http的区别?

14.eval函数的弊端

  • eval不容易调试。
  • 造成性能下降。

15.javascript内存泄漏

  • 意外的全局变量
    js中如果不用 var 声明变量,该变量将被视为 window 对象(全局对象)的属性,也就是全局变量.
function foo(arg) {
    bar = "this is a hidden global variable";
}

// 上面的函数等价于
function foo(arg) {
    window.bar = "this is an explicit global variable";
}
  • 被遗忘的定时器或者回调
var someResource = getData();
setInterval(function() {
    var node = document.getElementById('Node');
    if(node) {
        node.innerHTML = JSON.stringify(someResource));
    }
}, 1000);

这样的代码很常见, 如果 id 为 Node 的元素从 DOM 中移除, 该定时器仍会存在, 同时, 因为回调函数中包含对 someResource 的引用, 定时器外面的 someResource 也不会被释放.
* 没有清理的DOM元素引用

var elements = {
    button: document.getElementById('button'),
    image: document.getElementById('image'),
    text: document.getElementById('text')
};

function doStuff() {
    image.src = 'http://some.url/image';
    button.click();
    console.log(text.innerHTML);
}

function removeButton() {
    document.body.removeChild(document.getElementById('button'));

    // 虽然我们用removeChild移除了button, 但是还在elements对象里保存着#button的引用
    // 换言之, DOM元素还在内存里面.
}
  • 闭包
var theThing = null;
var replaceThing = function () {
  var originalThing = theThing;
  var unused = function () {
    if (originalThing)
      console.log("hi");
  };
  var someMessage = '123'
  theThing = {
    longStr: new Array(1000000).join('*'),
    someMethod: function () {
      console.log(someMessage);
    }
  };
};

16.严格模式有哪些限制?

  • 不能使用with语句
  • 所有变量都要先声明
  • 调用的函数(不是方法)中的一个this值是undefined
  • 在严格模式下,函数的arguments对象拥有传入函数值的静态副本。在非严格模式下,arguments里的数组元素和函数参数都只想同一个值的引用。

17.webpack 的plugin和loader有什么区别,webpack为什么要设计loader和plugin ?

18.react的setState为什么要设计成异步的?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值