某公司前端笔试题

1.javaScript有哪几种数据类型

   5种基础数据类型   Number String Array Boolean Undefined 

   1种复杂类型     Object

2.JavaScript中哪些为真?哪些为假?

  为假的值

      ''  0  -0  false  undefind  null  NaN

  其他的所有值都是真

3.计算以下运行结果

  1)  alert(0/0);    -->NaN  

//拓展    

NaN != NaN           //-->true

infinity/infinity        //-->NaN

infinity-infinity        //-->NaN

 

 

  2)  alert(1/0)    ---->Infinity

  3)  var arr =[1,'abc',function(){alert(3333);}];

      alert(arr[2]())  --->3333  undefined

      arr[2]();    ---->3333

  4)  var len = 4;

     while(len--)  //这里len判断之后再  --  

     {

      setTimerout(function(){console.log(len),3000);  -----> -1,-1,-1,-1

      console.log(len);               ----->3,2,1,0

     }      

  5)  window.name = 'Window';

     var cat = {

      name:'Cat'

     };

     var dog = {

      name = 'Dog',

      sound:function(word){

        alert(this.name+word);  

        }    

      };

    dog.sound('is pooping');      --->'Dogis pooping'

    dog.sond.call(window,'is banking');  --->'windowis banking'

    dog.sound.call(dog,'is banking');   ---->'Dogis banking'

    dog.sound.apply(cat,['miaowing']);  ---->'Catis miaowing'

4.请写出以下正则表达式的详细规则说明

  1)  /^(0[1-9]\d\d?)?[1-9]\d(6)\d?$/

    这个正则表达式是  匹配    

  以 0 + 1-9的数字 + 一到两个数字为开头  再加  1-9的数字 + 一个数字再+  6 再加一个或者不加数字为结尾

或者

  以 1-9的数字为开头 + 一个数字再+  6 再加一个或者不加数字为结尾

  2)/^1[89]|[2-9]\d|100&/i  

    这个正则表达式可以匹配三种情况     不区分大小写

      一种是     18/19

      另一种   2-9的数字 + 上任意一位数字

      或者      100

  3)  /^\w\-/+@[a-z0-9\-]+([\[a-z]{2-6})(1,2)$/i

     这个正则表达式匹配的是

      不区分大小写   以 一个或者多个 字母 或者 - 开头  再加上 @ 再加上 一个或多个 a-z 0-9

      在接上 2-6个   a-z 或 [   一次或者两次

5.请写出打乱数组的方法

  方法1

    var arr = [1,2,3,4,5,6,7,8,9];
    function arrBreak (arr) {
      arr.sort(()=>{
        var flag = Math.ceil(Math.random() - 0.5);
        console.log(flag);
        return flag;
      })
    }
    console.log(arr);

  方法2

    function arrBreak(arr){
      [len] = [arr.length];
      while(len--){
        j = Math.floor(Math.random()*len);
        [arr[len],arr[j]] = [arr[j],arr[len]]
      }
    }
    arrBreak(arr)

6.写出document.getElementsByClassName的实现方法

  其实不太懂  实现方法是什么意思   试问怎么用???

 根据dom元素的class值 获取与 方法匹配class 的dom  生成一个dom数组,

 要用的时候 用  []   读取数组中的dom即可

7.下列哪个不属于 js 保留字?            ( B )

A.with
B.parent
C.class
D.void  空的 无效的

8.jquery中如何选择一个元素的所有兄弟节点  

.sublings()

9.以下那条语句会产生运行错误?          ( A

A.var obj = ();
B.var obj = [];
C.var obj = {};
D.var obj = //;

10.请选择对javascript理解有误的?          (B) 

A.Jscript是javascript的简称
B.javascript   是网景公司开发的一种java脚本语言,其目的是为了简化java开发的难度
C.FireFox和IE存在大量兼容问题是因为他们对javaScript的支持程度不同
D.ajax技术一定要使用javaScript技术

    java 当时是sun公司的     现在是 oracle的  

    javaScript是网景公司,的工程师 布兰德·奇  开发的,当时开发的要求是   

    开发一个与java相似但要比java简单的语言   

    1.删除所有相关浏览器的内容,2.对象与平台无关,3.全面支持unicode编码

     原本开发出来叫做  liveScript  后来由于经济原因  为了宣传 与  sun公司合作 使用 javaScript这个名字为了宣传

11.解释div元素和span元素的区别

  div 是块级元素   独占一行   可以设置宽高等属性

  span  是行内元素   不独占一行  不可设置宽高,margin-top/margin-bootom等属性

12.alert中如何换行?

  在aler中使用js特殊字符    \n  或者  \r

alert('firstLine\rsecondLine');

13.以下关于Array数组对象说法不正确的是      (C B )

A.对数组中数据排序可以使用sort函数,如果排序效果非预期,可以给sor函数加一个排序函数的参数
B.reverse用于对数组数据的倒序排列
C.想数组的最后位置加一个新元素可以用 pop方法  //push是加 pop是删除
D.unshift方法用于向数组删除第一个元素  //应该是添加

14.push(),pop(),shift(),unshift()分别是什么功能?

  push()    尾部加一位   可以传多位 作为多位的值  返回值是长度

  pop()      尾部删除一位  不支持传参  

  shift()   头部删除一位  不支持传参

  unshift()  头部添加一位  可以传多位 作为多位的值 返回值是长度

15.如何阻止事件的冒泡

  粗暴的方法  return false;

  标准方法   event.stopPropagation();

 

 

 

  

 

 

 

 

 

 

 

      

posted @ 2018-04-03 14:14  清汤不加辣  阅读(161)  评论(0编辑  收藏  举报