HTML5学堂-码匠 HTML5学堂

您当前位于:HTML5面试题 ——> WEB前端面试真题 - 作用域相关知识面试题

WEB前端面试真题 - 作用域相关知识面试题

2015/04/27 14:55:41 | 作者:HTML5学堂(码匠) | 分类:HTML5面试题 | 关键词:WEB前端,面试题,作用域,全局作用域

作用域实战面试题

HTML5学堂:两道经典的作用域习题,测测自己是不是掌握了作用域的知识吧~!在这道面试题中,主要涉及了JavaScript的编译期与执行期,应当清楚编译期JS做了什么操作,执行期又做了什么操作。知识方面,也要求对全局作用域、局部作用域的概念有所了解,并且能够明确局部作用域与全局作用域之间的访问特点。

题目:

  1. var a=20;
  2.  
  3. h5course();
  4. function h5course(){
  5.     var a =10;
  6.     alert(a);
  7. }
  8. alert(a);

1、面试题种类

作用域

2、面试题考核知识点

JS的编译期与执行期,全局作用域、局部作用域

3、面试题注意点

全局不能访问到局部作用域中的空间

4、面试题参考答案

本题目,在全局作用域下创建了一个a变量。在h5course函数下创建了一个a变量。在全局当中是不能够访问到局部中的内容,但是局部当中是能够访问到全局变量,如果局部作用域中出现变量,如果局部作用域中开辟了的变量存储空间,则不再向外层进行查找,如果在局部作用域中无法找到开辟的变量存储空间,则向外层进行查找。以此类推,直到寻找到最外层(window)为止

本题答案:共弹出两次,第一次弹出的是10,第二次弹出的是20(在全局和局部共开辟了两块空间,存储两个变量a的值,在全局调用的是全局变量a,而在局部,调用的是h5course函数这个局部作用域中的变量a)

欢迎沟通交流~HTML5学堂

题目:

  1. var a = 10;
  2. seta();
  3. function seta(){
  4.     alert(a);
  5.     var a = 20;
  6. }
  7. alert(a);

1、面试题种类

作用域

2、面试题考核知识点

JS的编译期与执行期,全局作用域、局部作用域

3、面试题注意点

JS先编译后执行

4、面试题参考答案

本题目,在全局作用域下创建了一个a变量。在h5course函数下创建了一个a变量。在全局当中是不能够访问到局部中的内容,但是局部当中是能够访问到全局变量,如果局部作用域中出现变量,如果局部作用域中开辟了的变量存储空间,则不再向外层进行查找,如果在局部作用域中无法找到开辟的变量存储空间,则向外层进行查找。以此类推,直到寻找到最外层(window)为止。

与前面一题不同的是,函数中的alert语句调用了a变量,这个语句出现在var a(声明变量)之前。在JS编译期当中,进行了seta函数中变量a空间的开辟,但是此时并没有放置任何的值在其中。然后就执行了alert语句,此时,局部作用域有空间,所以并不会往父级查找,取到的是函数中变量的空间,但是因为JS的运行自上而下,并没有将20赋值给a。因此会弹出undefined

 

本题答案:共弹出两次,第一次弹出的是undefined,第二次弹出的是10(在全局和局部共开辟了两块空间,存储两个变量a的值,在全局调用的是全局变量a,而在局部,调用的是h5course函数这个局部作用域中的变量a)

欢迎沟通交流~HTML5学堂

微信公众号,HTML5学堂,码匠,原创文章,WEB前端,技术分享

HTML5学堂

原创前端技术分享

HTML5学堂,HTML5,WEB,前端,视频课程,技术视频,学习视频,面试,JS

原创视频课程

用心打造精品课程

微信小程序,决胜前端,面试题,面试题集合,前端,HTML5,真题

小程序-决胜前端

前端面试题宝库

原创书籍,学习书籍,书籍推荐,HTML5布局之路,HTML5,WEB前端

HTML5布局之路

非传统模式讲解前端