公司的JS笔试题~你能的JS基础牢不牢!

公司的JS笔试题~你能的JS基础牢不牢!嘿嘿

复制代码
代码
 1  var  flag = true ;
 2  var  flag2 = true ;
 3  if (flag == true )
 4  {
 5     var  i = 0
 6    
 7    j = 1
 8    
 9     if (flag2 == true )
10    {     
11       for (   var  m = 0 ;m < 10 ;m ++ )
12      {
13       
14       }
15    }
16  }
17 
18  alert(i);
19  alert(j);
20  alert(m);
复制代码


// 输出 0, 1, 10

 

复制代码
var  x  =   1

 
function  ScopeTest(){
    alert( x );   
}
 
 ScopeTest(); 
//  输出 1
复制代码


 // 输出 1

 

复制代码
var  x  =   1

 
function  ScopeTest(){
    alert( x );   
    
var  x  =   ' hello world ' ;
    alert( x );    
 }
 
 ScopeTest(); 
复制代码


// 输出 underfined, hello world

 

复制代码
var  name  =   ' laruence ' ;     
function  echo()
 {         
  alert(name);   
 }      
function  env()
 {
    
var  name  =   ' eve ' ;         
    echo();   
}      

env();
复制代码


// 输出 laruence

 

复制代码
function  test(xxx){
  alert(xxx);
  
var  xxx  =   123
  
function  xxx(){  
  }
  alert(xxx); 
}
test(
444 );
复制代码


// 输出 function xxx(){},123 

 

复制代码
代码
            function  JSClass() {
            
this .m_Text  =   ' division element ' ;
            
this .m_Element  =  document.createElement( ' DIV ' );
            
this .m_Element.innerHTML  =   this .m_Text;

            
this .m_Element.attachEvent( ' onclick ' this .ToString);
        }

        JSClass.prototype.Render 
=   function () {
            document.body.appendChild(
this .m_Element);
        }

        JSClass.prototype.ToString 
=   function () {
            alert(
this .m_Text);
        };

        
var  jc  =   new  JSClass();
        jc.Render();
// 添加渲染div元素
        jc.ToString();  // 输出 division element

        
// click添加的div元素division element会输出underfined,为什么?
复制代码


       //click添加的div元素division element会输出underfined,为什么?
        
        //这时的EventHandler()方法中的this关键字,指示的对象是IE的window对象。
        //这是因为EventHandler只是一个普通的函数,对于attachEvent后,
        //脚本引擎对它的调用和div对象本身没有任何的关系。同时你可以再看看EventHandler的caller属性,
        //它是等于null的。如果我们要在这个方法中获得div对象引用,应该使用:this.event.srcElement。 

 

复制代码
代码
            var  obj  =  {
            i: 
" test " ,
            m: 
function () {
                alert(
this .i);  // 指向obj对象 实例,输出值test 
                 function  B() {
                    alert(
this .i);  // 输出值undefined
                     // 调用B的实例是m,不是obj,所以this就是m
                     // m里面没有i,所以默认会加上一句var i;当然是underfined。
                }
                B(); 
            }
        }
        obj.m(); 
复制代码


代码

 

复制代码
代码
    1 var  obj  =  {  
   
2 .    i :  " test " ,  
   
3 .    m :  function (){  
   
4 .       alert( this .i); // 指向obj对象 ,值test  
    5 .        function  B(){  
   
6 .           var  i  =   1 ;  
   
7 .          alert( this .i); // 指向window对象,值undefined  
    8 .       }  
   
9 .       B(); // B并不是window的方法,this为什么也指向window??????  
   10 .    }  
  
11 . }  
  
12 . obj.m();   
复制代码


//this指向的是当前函数的作用域,而不是函数的调用者 
//函数的作用域在其定义时已经确定,但可以动态改变. 
//行内嵌js作用域会出现比较特别诡异的情况,不推荐这种写法. 

 

主要考察JS知识点

 

  1. JavaScript是解释性动态语言,不是编译性静态语言
  2. 在JS中”一切皆是对象, 函数也是”
  3. JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里
  4. JavaScript没有块级作用域。
  5. JavaScript的变量作用域是基于其特有的作用域链的
  6. 函数中声明的变量在整个函数中都有定义
  7. 函数体内部,局部变量的优先级比同名的全局变量高。
  8. 未使用var关键字定义的变量都是全局变量。
  9. 全局变量都是window对象的属性
  10. JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里
  11. ( 在JS中, 有预编译/预解释的过程,JS的预编译是以段为处理单元的,JS在执行每一段JS代码之前, 都会首先处理var关键字和function定义式(函数定义式和函数表达式)。在调用函数执行之前, 会首先创建一个活动对象, 然后搜寻这个函数中的局部变量定义,和函数定义, 将变量名和函数名都做为这个活动对象的同名属性, 对于局部变量定义,变量的值会在真正执行的时候才计算, 此时只是简单的赋为undefined. )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值