大厂前端面试题

1、[单选题] 有以下 ES6 代码 

function * gen() { 
  yield 1;
  yield 2;
  yield 3; 
} 

下面选项描述正确的是哪个? 

A.gen()执行后返回 2

B.gen()执行后返回 undefined

C.gen()执行后返回一个 Generator 对象

D.gen()执行后返回 1

答案:C

提示:这是 ES6 的新 feature, function 后面带  * 的叫做 generator function。函数运行时, 返回一个迭代器。 

2、[不定项选择题] 语句 var arr=[a,b,c,d];执行后,数组 arr 中每项都是一个整数,下面得到其中最大整数语 句正确的是哪几项? 

A.Math.max(arr)

B.Math.max(arr[0], arr[1], arr[2], arr[3])

C.Math.max.call(Math, arr[0], arr[1], arr[2], arr[3])

D.Math.max.apply(Math,arr) 

答案:B C D 

提示: A 选项错误 

因为函数 Math.max(x);的参数是 Number 类型,可以使小数,整数,正数,负数或者是 0.如果不是上面所述类型就会返回 NaN. 

3、[问答题] 写一个 traverse 函数,输出所有页面宽度和高度大于 50 像素的节点。 

<script language="javascript">
  function traverse() {
    var arr = [];
    var elements = [];
    if (document.all) {
      elements = document.all;
    } else {
      elements = document.getElementsByTagName("*");
    }
    for (var i = 0; i < elements.length; i++) {
      var ele = elements[i];
      // width 返回的是字符串   offsetWidth 返回的是带边框的 Number 型的数字 
      var width = parseFloat(ele.style.width) || ele.offsetWidth;
      var height = parseFloat(ele.style.height) || ele.offsetHeight;
      if (width > 50 && height > 50) {
        arr.push(elements[i].tagName);
      }
    }
    return arr;
  }
  window.onload = function () {
    console.log(traverse());
    console.log("a");
    console.log('a');
  }
</script>

猜你喜欢

转载自www.cnblogs.com/haishen/p/11697430.html