js前端面试总结题汇总积累

 // 1.
 var a=1;
 function demoY(n){
    n=n+1;
 }
 y=demoY(a);
 function demoZ(n){
    n=n+3;
 }
 z=demoZ(a);
 console.log(a);//1
 console.log(y);//undefined
 console.log(z);//undefined
 // 2.
 var a1=10;
 var b1=20;
 console.log('a1+b1='+a1+b1);//执行的结果是:a1+b1=1020
 console.log(++a1+b1++);//执行的结果是:31

 console.log('a1+b1='+a1+b1);//执行的结果是:a1+b1=1121

//3.
var a='hello';
(function(){
alert(a);//弹出来undefined
var a='wo';

})()//外边也定义啦 里面也定义啦 但是函数里面定义是在alert后面  alert出来的a就近选择函数里面的声明 涉及变量声明会提前 但是赋值在后面才赋值  (我是这么理解的)

4.     /*
            抛出问题:
                此题的目的是想每次点击对应目标时弹出对应的数字下标 0~4,但实际是无论点击哪个目标都会弹出数字5
            问题所在:
                arr 中的每一项的 onclick 均为一个函数实例(Function 对象),这个函数实例也产生了一个闭包域,
                这个闭包域引用了外部闭包域的变量,其 function scope 的 closure 对象有个名为 i 的引用,
                外部闭包域的私有变量内容发生变化,内部闭包域得到的值自然会发生改变
            */
            var arr = document.getElementsByTagName("p");
         for(var i = 0; i<arr.length;i++){
                 // console.log(i);
                (function(){
                   var temp = i;
                    arr[i].onclick = function () {
                        // console.log(this);
                        alert(temp);
                    }
                })();
            }

5.

浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找。比如之前说的 DIV#divBox p span.red{color:red;},浏览器的查找顺序如下:

先查找html中所有class='red'的span元素,找到后,再查找其父辈元素中是否有p元素,再判断p的父元素中是否有id为divBox的div元素,如果都存在则匹配上。

6.    // 数组中数字转化为最大的正整数
//数组转字符串
var arr=[1,34,23,58,98,58,43];
var str='';
  for(let elem of arr){
       str+=elem+"";
  }
  //字符串转数组之后排序    
  var newarr=str.split('').sort(
      function(a,b){
      return b-a
      });
  //字符串转数字类型
 console.log(newarr.join(''));

猜你喜欢

转载自blog.csdn.net/qq_34507902/article/details/79133624