前端练习错题集--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_第1张图片

  • 解析:
    选择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_第2张图片

  • 解释:
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"

你可能感兴趣的:(前端题集)