国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

10道典型的JavaScript面試題

2024-05-06 15:19:31
字體:
來源:轉載
供稿:網友

問題1: 作用域(Scope)

考慮以下代碼:

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

控制臺(console)會打印出什么?

答案:5

如果 嚴格模式開啟,那么代碼就會報錯 ” Uncaught ReferenceError: b is not defined” 。請記住,如果這是預期的行為,嚴格模式要求你顯式地引用全局作用域。所以,你需要像下面這么寫:

(function() { 'use strict'; var a = window.b = 5;})();console.log(b);

問題2: 創建 “原生(native)” 方法

在 String 對象上定義一個 repeatify 函數。這個函數接受一個整數參數,來明確字符串需要重復幾次。這個函數要求字符串重復指定的次數。舉個例子:

console.log('hello'.repeatify(3));

應該打印出hellohellohello.

答案:

String.prototype.repeatify = String.prototype.repeatify || function(times) { var str = ''; for (var i = 0; i < times; i++) {  str += this; } return str;};

在這里,另一個關鍵點是,看你怎樣避免重寫可能已經定義了的方法。這可以通過在定義自己的方法之前,檢測方法是否已經存在。

String.prototype.repeatify = String.prototype.repeatify || function(times) {/* code here */};

問題3: 變量提升(Hoisting)

執行以下代碼的結果是什么?為什么?

function test() { console.log(a); console.log(foo()); var a = 1; function foo() {  return 2; }}test();

答案:

這段代碼的執行結果是undefined 和 2。

這個結果的原因是,變量和函數都被提升(hoisted) 到了函數體的頂部。因此,當打印變量a時,它雖存在于函數體(因為a已經被聲明),但仍然是undefined。換言之,上面的代碼等同于下面的代碼:

function test() { var a; function foo() {  return 2; } console.log(a); console.log(foo()); a = 1;} test();

問題4: 在javascript中,`this`是如何工作的

以下代碼的結果是什么?請解釋你的答案。

var fullname = 'John Doe';var obj = { fullname: 'Colin Ihrig', prop: {  fullname: 'Aurelio De Rosa',  getFullname: function() {   return this.fullname;  } }};console.log(obj.prop.getFullname());var test = obj.prop.getFullname;console.log(test());

答案:

這段代碼打印結果是:Aurelio De Rosa 和 John Doe 。原因是,JavaScript中關鍵字this所引用的是函數上下文,取決于函數是如何調用的,而不是怎么被定義的。

在第一個console.log(),getFullname()是作為obj.prop對象的函數被調用。因此,當前的上下文指代后者,并且函數返回這個對象的fullname屬性。相反,當getFullname()被賦值給test變量時,當前的上下文是全局對象window,這是因為test被隱式地作為全局對象的屬性。基于這一點,函數返回window的fullname,在本例中即為第一行代碼設置的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 彝良县| 桑日县| 苍南县| 南华县| 略阳县| 抚州市| 类乌齐县| 炉霍县| 金寨县| 壤塘县| 江津市| 潼南县| 崇明县| 西丰县| 东方市| 邢台县| 昭平县| 平陆县| 普定县| 壶关县| 宣汉县| 四平市| 琼海市| 迁安市| 阿拉善右旗| 邵东县| 温州市| 邹平县| 金沙县| 柳州市| 资源县| 高要市| 太保市| 盈江县| 尼木县| 镇赉县| 丹阳市| 铜鼓县| 喀什市| 竹山县| 罗定市|