前端js部分面试题

1.写出一个方法,可以数组去重

方法一:构建一个新的数组存放结果;for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比;若结果数组中没有该元素,则存到结果数组中.

     <script>
               function unique(arr){
                   var result=[];//用来存放查找的元素
                   for(var i=0;i<arr.length;i++){//外层循环遍历arr[i]
                       for(var j=0;j<result.length;j++){//内层循环遍历新的数组
                           if(arr[i]=result[j]){//如果相等 表示arr[i]在新的数组中已经存在不继续执行
                               break;
                           }
                       }
                       if (j==result.length) {//如果j==新数组的长度,表示遍历新数组后没有找到一样的
                           result[result.length]=arr[i];
                       }
                   }
                   return result;x
               }
               function testunique(){
                   arr[i] = [1,2,3,4,3,5,6,4,3,2,3];
                   var result=unique();
                   console.log(result);
               }
       </script>

方法二:

  先将数组进行排序,排序之后重复数组会在相邻的位置,然后检查数组第一个和最后一个元素是否相同,如果不相同,就把元素放进新的数组中去。

  这种方案改变了元素本来的顺序,是排序过后的数组。

function unique(){
          var arr= [1,2,3,4,3,5,6,4,3,2,3];
          var result = [];//存放结果数组
          arr = arr.sort();
          // console.log(arr);
          for(var i=0;i<arr.length;i++){
              if(arr[i]!= result[result.length-1]){
                  result.push(arr[i]);
              }
          }
          console.log(result);
      }

2.split()和join()的区别

  join() 方法用于把数组中的所有元素放入一个字符串。

  元素是通过指定的分隔符进行分隔的。

  指定分隔符方法join("#");其中#可以是任意;

  split,是把一串字符(根据某个分隔符)分成若干个元素存放在一个数组里。而Join是 把数组中的字符串连成一个长串,可以大体上认为是split的逆操作。

  个人理解:jion("")表示把数组中所有的元素拼接成字符串存放在一个字符串中,split("")是把数组分割成若干个字符串然后存放在数组中。

3.javascript的typeof返回哪些数据类型:

  boolean,string,number,function,object,undefined,

4.

1 var User = {
2  count: 1,
3  getCount: function() {
4   return this.count;
5  }
6 };
7 console.log(User.getCount()); // what?
8 var func = User.getCount;
9 console.log(func()); // what?
两处输出的结果是什么?

 答:输出 1 和 undefined   解析:func是在window的上下文中被执行的,所以不会访问到count属性。 

5.函数声明与函数表达式的区别?

  在JavaScript中,解析器在执行环境中加载数据时候,解析器会率先读取函数声明,并且使其在执行代码之前可以访问,

  function fnName(){xxxx}; // 函数声明:使用function关键字声明一个函数,在指定一个函数名。

  

  函数表达式就必须等到解析器执行到所在代码行的时候才会被解析执行。

  var fnName = function(){xxxx}; //函数表达式:使用function关键字声明一个函数,但是未给函数命名,最后将匿名函数赋予给一个变量。

6.判断字符串以字母开头,后面可以是数字,下划线,字母,长度为6-30。

var reg=/^[a-zA-Z]\w{5,29}$/;

  用正则表达式:var reg = /^[a-z]\w{5,29}$/ig;

  解析:i表示不区分大小写    g表示全局查找

     [a-z]的所有字母  \w  匹配一个单字字符

     ^匹配字符串的开始 $匹配字符串的结束

7.

<script>
     var a = 100;  
     function test(){  
        alert(a);  
        a = 10;  //去掉了var 就变成定义了全局变量了
        alert(a);  
}  
test();
alert(a);
</script>

弹框输出的值是多少?

  答:100,10,100  错误:在调用函数以后a = 10   在函数中a并不是在函数作用中重新声明的变量 a  而是全局变量 a ,所以最后的a的值变化了。

8.javaScript的2种变量范围有什么不同?

  全局变量:在当前页面中有效。

  局部变量:在作用范围内有效。

9.null和undefined的区别?

  null表示“无”的对象,转换为数值的时候为0,;undefined表示为“无”的原始值,转为数值为NaN。

  当声明变量没有初始化的时候默认值为undefined。null表示为尚未存在的对象。

  undefined表示缺省值,意味此处应该有一个值,但为定义。

  常见情况为:

    1)声明变量后但为赋值,变量值为undefined。

    2)调用函数的时候没有提供参数,此时该参数值为 undefined。

    3)对象没有赋值的属性,属性值为undefined。

    4)函数没有返回值时,默认返回undefined。

  null表示没有对象,意味此处不应该有值

  常见情况为:

    1)作为函数的参数,表示该函数的参数不是对象。

    2)作为对象圆形链的终点。

     

猜你喜欢

转载自www.cnblogs.com/wangzheng98/p/10952218.html