• 前端笔试题及资料集锦(二)


    一.(2014阿里巴巴校招在线笔试)

     题目:请选择出前端页面开发,执行javascript代码alert(1)的代码:

               1.<iframe src="javascript:alert(1);"></iframe>

               2.<img src=""/onerror=alert(1);>

         3.<s style="top:expression(alert(1))"></s>

         4.<div onclick="alert(1)"></div>

    分析:事实证明1,2,3都可以,just try...

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4 <meta charset=utf-8>
     5 <title>demo</title>
     6 </head>  
     7 <style>  
     8  
     9 </style>  
    10     
    11 <body>
    12  <!-- 成功alert(1) -->
    13  <!-- <iframe src="javascript:alert(1);"></iframe> -->
    14  <!-- 成功alert(1) -->
    15  <!-- <img src=""/onerror=alert(1);> -->
    16  <!-- ie下兼容性视图成功alert(1) -->
    17  <!--  <s style="top:expression(alert(1))"></s> -->
    18  <!-- 没有alert(1) -->
    19  <div onclick="alert(1)"></div>
    20 
    21     
    22 </body>  
    23 </html>

    二、(2014阿里巴巴校招在线笔试)

    题目:请指出以下哪些是ECMAScript5新增的特性:

      1.Object.hasOwnProperty()

      2.Object.create

      3.Object.preventExtensions

      4.Object.isExtensible

    分析:资料表明,2,3,4都是新增的特性;

           这个题目充分的说明了,我们要关注新的东西喔~~~

    参考资料:http://blog.csdn.net/kabukon/article/details/6913381

    三、下面代码会返回什么

          

    (function(){
            return typeof arguments;
           })();

    分析:

           arguments是实参集合,有数组长度,没有数组方法,typeof会返回对象。

           于是乎,上面的代码会返回“object”。

    四、看下面代码

    1 var f = function g(){return 23;};
    2        typeof g();

    分析:

          这里面的表达式是有名函数表达式,不规范,g()只能在函数内部访问。

          typeof就会Error。

    五、下面代码return会返回什么

    1 (function(x){
    2          delete x;
    3          return x;
    4        })(1);

    分析:

        delete不能删除变量和参数,只能删除对象下面的属性,因此return还是会返回1。

    六、下面代码中的 x

    1 var y=1,x=y=typeof x;
    2        x;

    分析:

          后面表达式是从右向左执行的,typeof返回的都是字符串类型,最先运算的是typeof x,因为他先是'undefined'所以赋给了y,y再赋给x,于是乎最后就是'undefined'了。

    七、下面函数会返回什么

    1 (function f(f){
    2            return typeof f();
    3        })(function(){return 1;});

    分析:

        相当于typeof 1 然后会返回 'number' 

    八、下面代码会返回什么:

    1 var foo = {
    2          bar:function(){return this.baz;},
    3          baz:1
    4        } ;
    5        (function(){
    6           return typeof arguments[0]();
    7        })(foo.bar);

    分析:

          先看个例子:

    1 function test(){
    2         alert(this);
    3       }

        其实这样写的话这里面的this根本就是不确定的,也就不会弹窗,this指向哪要看在哪调用

       像这样写:

      

    1 var arr = [1,2,3];
    2       arr.test = test;
    3       arr.test();

        就会弹窗数组了喔。

        所以,本题中,foo中的this指向是不明确的,要看调用的地方,向foo.bar这样调用的话this是会指向foo的,但是foo.bar是整体作为参数传进去的,arguments[0]就相当于foo.bar,整体都作为函数名了,于是 arguments[0]()这种调用方式就相当于

    function test(){

    alert(this);
    }

    上面说的这种调用方式了,也就是说this指向window了,window中没有baz,于是就会
    会返回'undefined'了。

     

    九、下面的typeof f 会得到什么:

    1 var f = (function f(){return "1";},function f(){return 2})();
    2       typeof f;

    分析:

         这里面首先有了分组选择符,我们先看看什么事分组选择符吧:

          正常来说 var a = 1; 那么a就是1,但是如果这样写 var a = (1,2,3); 那么a就是3了,分组选择符执行最后一位。

          于是就执行分组选择符后面那个return 2的函数了,于是typeof f就是 'number'。

    十、看下面代码中的x

    1 var x =1;
    2       if(function f(){}){
    3          x += typeof f;
    4       }
    5       x;

    分析:

        function f(){}这样的函数必须是全局的或者是局部的,是不能写在运算里面的,于是下面f找不到 typeof f返回'undefined',f虽然找不到,但是在if里面还是会返回真。于是变成了运算1+'undefined',然后就会返回'1undefined'了




    十一、

    1 var x= [typeof x,typeof y][1];
    2 typeof typeof x;

    分析:

          很迷惑,其实根本不用管第一个表达式。typeof返回的必然是个字符串,于是typeof一个字符串了,于是就返回'string'。

    十二、看下面的代码

    1 (function(foo){
    2        return typeof foo.bar;
    3  })({foo:{bar:1}});

    分析:

         其实这里面的foo并不是指后面传进的参数中的foo,而是指整个参数{foo:{bar:1}}这个对象,但是这个对象中根本不存在bar属性,所以就会返回'undefined'了。

    十三、下面代码会return什么

     (function f(){
               function f(){return 1;}
               return f();
               function f(){return 2;}
           })();

       分析:

           函数声明预解析,后面函数已经把前面的覆盖掉了于是在执行f()的时候就是后面那个函数了,于是就返回2了。

    十四、看下面代码

    1 function  f(){return f;}
    2 new f() instanceof f;

    分析:  

          只看后面的表达式的话new f()就是构造函数生成的对象然后他去instanceof构造函数,然后就返回true了。但是有return f  于是f覆盖掉new f()这个生成的对象了,于是就变成了f instanceof f了,然后就会返回false了。

    十五、

    1 with (function(x,undefined){}) length;

    分析:

         函数的长度(length)就是函数的形参,而arguments是函数的实参集合

         比如说这样的
        function test(num1,num2,num3){}
        alert(test.length);
        就会弹出3

        同理,本题就会得到2.

  • 相关阅读:
    laravel 5.2 引入第三方类
    jquery获得option的值和对option进行操作
    复习知识点
    前端使用crypto.js进行加密
    使用jQuery Pagination Plugin实现分页效果
    配置文件
    MyBatis的适用场景和生命周期
    使用GET方式提交的表单遇到的问题
    Java复习——网络编程
    SpingData 的学习
  • 原文地址:https://www.cnblogs.com/skylar/p/3974898.html
Copyright © 2020-2023  润新知