智一面为您提供模拟练习题:

高级前端工程师    http://www.gtalent.cn/exam/interview?token=76f1af731aa16cfd9addb763891fb73e
中级前端工程师 http://www.gtalent.cn/exam/interview?token=05fc891d3a7b4f3a89520d6b789da38b
初级前端工程师 http://www.gtalent.cn/exam/interview?token=77be195b15052213bd1452130fbd7b64
前端实习生 http://www.gtalent.cn/exam/interview?token=e0a66129f7665f61d1d8bf17bcc5ccb5

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

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。

闭包特性:

(1)函数内再嵌套函数

(2)内部函数可以引用外层的参数和变量

(3)参数和变量不会被垃圾回收机制回收

li节点的onclick事件都能正确的弹出当前被点击的li索引

<ul>

  <li> index = 0 </li>

  <li> index = 1 </li>

  <li> index = 2 </li>

  <li> index = 3 </li>

</ul>

<script type="text/javascript">

  var nodes = document.getElementsByTagName('li');

  for(i = 0;i<nodes.length;i+=1) {

nodes[i].onclick = function() {

          console.log(i+1); //不使用闭包的话,值每次都是4

      }(4);

}

</script>

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

(1)我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。

(2)事件处理机制:IE是事件冒泡、Firefox同时支持两种事件模型,也就是:捕获型事件和冒泡型事件;

(3)ev.stopPropagation();(旧ie的方法 ev.cancelBubble = true;)

"use strict";是什么意思 ? 使用它的有什么好处或坏处?

use strict是一种ECMAscript 5 添加的(严格)运行模式,这种模式使得 Javascript 在更严格的条件下运行,使JS编码更加规范化的模式,消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为。

默认支持的糟糕特性都会被禁用,比如不能用with,也不能在意外的情况下给全局变量赋值;

全局变量的显示声明,函数必须声明在顶层,不允许在非函数代码块内声明函数,arguments.callee也不允许使用;

消除代码运行的一些不安全之处,保证代码运行的安全,限制函数中的arguments修改,严格模式下的eval函数的行为和非严格模式的也不相同;

提高编译器效率,增加运行速度;

为未来新版本的Javascript标准化做铺垫。

 

智一面|热门IT岗面试题集锦