前端筆試題及資料集錦(二)


一.(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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM