zoukankan      html  css  js  c++  java
  • 公司的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(); 


    代码
            <a id="alink" href="#" onclick="getEleType">Some text</a>
        <script type="text/javascript">
            
    function getEleType() {
                alert(
    this.tagName); //结果: undefined,其实getEleType.caller是null,this关键字指示的对象是IE的window对象
                
            }

            
    //正确的写法1:onclick="getEleType(this)"  function getEleType(m) {alert(m.tagName);
            //正确的写法2:document.getElementById("alink").onclick=getEleType;//this关键字指示的对象是caller实例

            
    </script>
    代码
       1var 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. )

    继续阅读

  • 相关阅读:
    【竞赛笔记】飞思卡尔智能车竞赛
    【实习笔记】智能广场健身设备总结
    RabbitMQ之安装
    数据结构与算法之队列
    joda-time时间操作组件
    JavaScript中的跨域问题
    数据结构与算法之链表
    Jedis集成到项目中
    ICMP协议和ping命令
    jedis的使用
  • 原文地址:https://www.cnblogs.com/Mainz/p/1792129.html
Copyright © 2011-2022 走看看