天天看点

前端练习错题集--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"