天天看點

前端練習錯題集--3

如何阻止IE和各大浏覽器預設行為( )

阻止預設事件:

e.preventDefault()

e.returnValue = false (IE)

阻止冒泡:

e.stopPropagation()

e.cancelBubble = true (IE)

執行以下程式段後,x的值是( )

var x=0;
switch(++x)
{
case 0: ++x;
case 1: ++x;
case 2: ++x;
}
           
  • 關鍵:沒有break;

    switch中,對x+1,此時x為1,然後進入case 1 中,又執行++x,此時x變為2;由于case 1中沒有break,然後繼續執行 case 2,執行++x,是以x變成3

以下哪些方法會傳回一個數組?

前端練習錯題集--3
  • 解析:

    選擇AB。

A.Object.keys()

該方***傳回一個由一個給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和使用 for…in 循環周遊該對象時傳回的順序一緻 。如果對象的鍵-值都不可枚舉,那麼将傳回由鍵組成的數組。

B.String.prototype.split()

split() 方法使用指定的分隔符字元串将一個String對象分割成字元串數組,以将字元串分隔為子字元串,以确定每個拆分的位置。

AB選項都是傳回數組。

C.Array.prototype.join()

join() 方法将一個數組(或一個類數組對象)的所有元素連接配接成一個字元串并傳回這個字元串。如果數組隻有一個項目,那麼将傳回該項目而不使用分隔符。

C選項傳回字元串。

D.Promise.all()

Promise.all(iterable) 方法傳回一個 Promise 執行個體,此執行個體在 iterable 參數内所有的 promise 都“完成(resolved)”或參數中不包含 promise 時回調完成(resolve);

如果參數中 promise 有一個失敗(rejected),此執行個體回調失敗(reject),失敗原因的是第一個失敗 promise 的結果。

D選項傳回的是promise對象。

下面哪些執行結果為true()

前端練習錯題集--3
  • 解釋:
function Human(name) {
    this.name = name;
    return {};
}
let one = new Human('c1er');
console.log(one); //輸出空對象 Object { }
           

以上述代碼為例:

使用new運算符調用函數時,會傳回一個對象。

如果構造函數沒有return語句時,則預設傳回原型為Human.prototype的、設定了屬性name的對象。

然而就像Class的constructor一樣,return語句傳回一個對象時,該對象将被作為new操作符的結果傳回。

是以。

A:String()作為普通函數使用時,将值轉為字元串,不是對象,預設傳回是一個空對象,原型為匿名函數的prototype。

String(new function(){ return String('foo'); })
"[object Object]"
           

B:String()作為構造函數來用時,傳回了一個字元串包裝對象。

String(new function(){ return new String('foo'); })
"foo"