日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript面试题目集锦

發布時間:2025/3/15 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript面试题目集锦 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里是我到處搜集的一些JS題目,看起來比較簡單,但對基礎知識的考察還是很到位的。

有一些還可能是面試題。 題目的分析肯定會有不足的地方 ,如果能指正出來的話就再好不過了。不斷更新中……

這里還有幾個前端工程師面試題的文章 也一并推薦給大家

http://www.cnblogs.com/jscode/archive/2012/07/10/2583856.html#2425501

http://blog.jobbole.com/29269/


1.

var length = 9; var foo = {bar: function() {return this.length;},length: 0 }; (function f(a, b) {f.length = 3;console.log(f.length);//console.log(arguments[0]());//console.log(a());//console.log((foo.bar)());//arguments[1]="XXX";console.log(b);// })(foo.bar ,33,11);

①f.length是Function f的形參數量 函數聲明之后就不會變化了。
②執行時 arguments = [function(){return this.length;} , 33 , 11];
arguments[0]中的this指向的是arguments對象 而arguments.length 得到的是實參的個數(不管函數聲明的時候有幾個參數)
③a的獲得相當于 var a = foo.bar;這時a的調用對象是window 而不是foo 。
④(foo.bar)() === foo.bar()這個就不細說了
⑤通過arguments能夠改變實參的值

2.

用(0-9 A-Z a-z)生成任意長度(62位以內)的各個位都不重復的隨機字符串

3.

function A(){alert(this);eval('alert(this)');(function(){alert(this);eval('alert(this)');})() } new A() 分別彈出什么?

4.?

function A(){this.x=1;} function B(){this.y=2;return "OK";} function C(){this.z=3;return Object("OK");} 問: new A(); new B(); new C(); 三者分別是什么類型對象?(即用Object.getPrototypeOf(obj)獲得的值)
可參考另一篇文章《JS中用new 創建對象及在構造函數中return的使用》

?5.

<script>
//①if (!("a" in window)) {var a = 1;}alert(a); //②function f(){if (!("b" in window)) {var b = 1;}alert(b);}f(); </script>

  全局變量是window的屬性

  執行上下文分為進入執行上下文和執行代碼兩部分。變量聲明和函數聲明在進入執行上下文階段就已完成。

? 要注意的一點是 ①和②答案的不同原因在于 a 聲明的是全局變量 而b因為是在函數中,所以是局部變量。

6.

var a = 1; alert(b);
var b = function a(x) {x && a(--x); } alert(a);①這里的Function b 不是函數聲明 而是函數表達式。所以只能在執行到代碼的時候才會賦值。 ②Function b 中的 a 只是匿名函數的別名,而且是個只能在 Function b里使用的局部變量。也就是說跟變量a沒有關系,不會發生覆蓋。

?7.

var a = 1; function a() { } function b() { } var b; console.log(a); console.log(b);//這里考察的是變量聲明,變量賦值,函數聲明的順序: //進入執行上下文后先進行函數聲明,然后是變量聲明,最后進行變量賦值。并且如果函數或變量已經存在,將不會重新聲明。
//也就是說,即使把變量聲明并賦值寫到函數聲明前面,也還是會按照上面的順序進行。 上面的代碼等同于
function a() { }
function b() { }
var a, b;
a = 1;

8.

function A() {function m(){console.log(this);}this.test = function() {m.call(this);m.call(null);}; } (new A()).test();//this值的定義:當一個方法在對象上調用的時候,this就指向到了該對象上 //m.call(this)的結果肯定是沒問題的 //當call和apply的第一個參數是null或undefined時,參數將替換成window對象

?

9.
  找出某數字數組中的最大元素(使用Math.max函數)

var arr = [3,5,2,7,10,8]; ①Math.max.apply([],arr); ②eval("(Math.max("+arr+"))"); 這是目前看到的最好最簡潔兩種方案了,活用apply和eval 題外話:大家初學的時候都被告誡要“遠離”eval,實際上,如果合理使用的話,eval絕對是把利器。

?

10.
  轉化一個數字數組為function數組(每個function都彈出相應的數字)

var a = [2,4,6,3]; var b =a.map(function(i,o){return function(){return console.log(i);}; });

?

11.
  給object數組進行排序(排序條件是每個元素對象的屬性個數)

var arr = [{A:32,B:2,C:5},{A:32},{A:32,B:2,C:5,D:7},{A:32,B:2,C:5} ]; arr.sort(function(m,n){function getPropCount(obj){var i=0;if(typeof obj == "object"){for(var p in obj){++i;}}return i;}return getPropCount(m) - getPropCount(n); });

?

12.
  實現如下語法的功能:var a = (5).plus(3).minus(6); //5+3-6

Number.prototype.plus = function(num) {return this + num; }; Number.prototype.minus = function(num) {return this - num; }; console.log((5).plus(3).minus(6));這里 (5).plus(3).minus(6) 可以用 5..plus(3).minus(6)代替 但不可以用 5.plus(3).minus(6) 數字后面的第一個小數點是屬于數字部分的,相當于 5.0.plus(3),第二個才是調用方法。 所以 5.plus()是會出錯 而 5..plus()卻可以

?

13.
  實現如下語法的功能:var a = add(2)(3)(4)(111).....; //2+3+4+111+... 可無限擴展的。

function add(x) {function fn(m) {fn.pValue = m + (fn.pValue || 0);return fn;};fn.pValue = x;fn.toString = fn.valueOf = function() {return fn.pValue;}return fn; } 這里主要考察的是toString的重載。例如下面的例子 var arr = [1,3,5] console.log(arr+""); // "1,3,5" Array.prototype.toString=function(){return this.join("--"); } console.log(arr+""); // "1--3--5"

?

:以上第五到第十四題的出處?http://dmitry.baranovskiy.com/post/91403200

?

? 沒有標準答案。 我在這里給出的答案也只是自己覺得不錯的答案而已。


14.

考點:with對作用域的影響

var x = 1; (function() {var x = 2;function funcA() {console.log(this.x);}with ({funcB: function() { console.log(this.x); }, x: 3}) {function funcC() {console.log(this.x);}funcA();//?funcB();//?funcC();//?}; } ())

?

15
考點:setTimeout的執行時機

var A = true; setTimeout(function(){A = false; },1000);while(A){}alert("End"); //問:大約過多久會alert?

如果不清楚setTimeout中function的觸發時機的話,這絕對是個大坑


接下來的若干題目整理自http://perfectionkills.com/javascript-quiz/


16.

(function(){return typeof arguments;})();1.“object2.“array”3.“arguments”4.“undefined”

考點:arguments是類似于數組的對象,訪問方式與數組相同

17.

var f = function g(){ return 23; };typeof g();“number”“undefined” “function”Error

g是f方法的別用,且只能在f方法的內部使用

18.

(function(x){delete x;return x;})(3);3
nullundefinedError

delete 只用于刪除某個對象的屬性,如果沒有指定對象的話,則默認是window
而這里面的形參x顯然不是屬性

19.

var y = 1, x = y = typeof x; console.log(x);1“number”undefined“undefined”

考點:變量聲明與賦值的時機

20.

(function f(f){return typeof f();})(function(){ return 1; });“number”“undefined”“function”Error

21.

var foo = {bar: function() { return this.baz; },baz: 1 }; (function(){return typeof arguments[0](); })(foo.bar);“undefined”“object”“number”“function

22.

var foo = {bar: function(){ return this.baz; },baz: 1} typeof (f = foo.bar)();“undefined”“object”“number”“function

23.

var f = (function f(){ return "1"; }, function g(){ return 2; })(); typeof f;
“string”“number”“
function”“undefined”

24.

var x = 1; if (function f(){}) {x += typeof f; } x;
1“1function”“1undefined”NaN

這個答案在瀏覽器間存在差異

25.

var x = [typeof x, typeof y][1]; typeof typeof x;“number”“string”“undefined”“object”

26.

(function(foo){return typeof foo.bar;})({ foo: { bar: 1 } });“undefined”“object”“number”Error

這個問題是考眼力的。。。
匿名函數的實參相當于 var arg = {foo:{bar:1}};
所以在函數執行的時候 相當于
var arg = {foo:{bar:1}};
return arg.bar;

27.

(function f(){function f(){ return 1; }return f();function f(){ return 2; } })();12Error (e.g. “Too much recursion”)undefined

考點:函數的聲明與賦值時機

28.

function f(){ return f; } new f() instanceof f;truefalse

相當于 f instanceof f;

29.

with (function(x, undefined){}) length;12undefinedError

乍看好像有點蒙 分解一下就好了

var f = function(x,undefined){};
with(f){ length;
} //這句再恢復一下就是 with(f){ return f.length;}

30.

console.log(Function instanceof Object); var arr = []; console.log(arr.constructor === Array.prototype.constructor);var num = new Number(2); console.log(typeof num);

31.

(function(){var a=b=1; })(); console.log(a);
console.log(b);

?a和b分別會輸出什么呢?

這個問題的陷阱就是,在立即執行函數表達式(IIFE)中,有兩個命名,但是其中變量是通過關鍵詞var來聲明的。這就意味著a是這個函數的局部變量。與此相反,b是在全局作用域下的。

這個問題另一個陷阱就是,在函數中他沒有使用"嚴格模式"?('use strict';)。如果?嚴格模式 開啟,那么代碼就會報出未捕獲引用錯誤(Uncaught ReferenceError):b沒有定義。

記住,嚴格模式要求你在需要使用全局變量時,明確地引用該變量。因此,你需要像下面這么寫:

(function(){'use strict';var a = window.b=1; })();

?



?

?

?

?

?

轉載于:https://www.cnblogs.com/TiestoRay/archive/2012/09/21/js_interview_questions.html

總結

以上是生活随笔為你收集整理的JavaScript面试题目集锦的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩一区二区不卡 | 精品国产无码在线观看 | 国产干b| 天天夜夜草 | 一区二区三区有限公司 | 蜜桃臀一区二区三区 | 欧美日韩精品一区二区在线观看 | 久久精品免费av | 日本精品在线一区 | av福利在线看 | av收藏小四郎最新地址 | 亚洲一区视频在线播放 | 黄色小视频免费观看 | 人人干97| 99视频免费 | 脱美女衣服亲摸揉视频 | 天堂影院一区二区 | 经典一区二区三区 | 亚洲二区一区 | 国产一级做a爰片在线看免费 | 91最新视频 | 日韩精品高清在线观看 | 亚洲av日韩精品久久久久久久 | 国产第一精品视频 | 长腿校花无力呻吟娇喘的视频 | 亚洲国产精品福利 | 91干视频| 在线观看欧美 | 四虎一国产精品一区二区影院 | 国产在线精品一区二区 | 国产曰肥老太婆无遮挡 | 国产精品正在播放 | 温柔少妇的高潮呻吟 | 国产片免费| 午夜小视频网站 | 国产欧美久久久 | 欧美一级性生活视频 | 国产a黄 | 猛男被粗大男男1069 | 欧美亚洲综合网 | 亚洲天堂最新 | 亚洲美女一区 | 无码播放一区二区三区 | 寡妇一级片 | 人妻熟女一区二区三区 | 日韩成人精品在线 | 男女免费观看视频 | 久久综合九色 | 日本一区二区高清不卡 | 欧美日韩黄色网 | 日韩和欧美一区二区 | 日批视频在线 | 黄色网页在线观看 | 超碰综合在线 | 免费观看的毛片 | 国产一区二区三区四区三区四 | 特级丰满少妇一级aaa爱毛片 | 亚洲国产精品一区二区久久hs | 老女人综合网 | 午夜在线一区二区三区 | 肉色超薄丝袜脚交69xx | 日韩色小说 | 日本美女全裸 | 在线观看国产精品入口男同 | av免费网| 欧美在线看片 | 一区二区视频在线看 | 国产精品免费在线播放 | 不卡av网| 蜜桃视频导航 | 理想之城连续剧40集免费播放 | 免费裸体视频女性 | 深爱五月激情网 | 最新视频–x99av | av片在线免费看 | 成人作爱视频 | 在线欧美激情 | 国产精品麻豆视频 | 奇米在线观看 | 日韩成人黄色 | 两个人看的www视频免费完整版 | 午夜久久久久久久久久 | 青少年xxxxx性开放hg | 偷拍自拍一区 | 日本黄色大片免费看 | 乱色欧美| 欧美人狂配大交3d | 迈开腿让我尝尝你的小草莓 | 欧美一级片在线免费观看 | 日本少妇喂奶漫画 | 在线观看日韩 | 国产91绿帽单男绿奴 | 二级毛片视频 | 免费人成年激情视频在线观看 | 亚洲乱码少妇 | 男女日批网站 | 操丝袜美女视频 | 国产原创一区 | 深夜成人在线观看 |