前端面试题

Posted lyx1014

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端面试题相关的知识,希望对你有一定的参考价值。

1.回答以下代码,输出alert的值

<script>
     var a = 100;  //全局变量,代码在任何地方都可以引用
     function test(){  
        alert(a);  //
        a = 10;  //去掉了var 就变成定义了全局变量了
        alert(a);  
}  
test();//调用函数
alert(a);
</script>

2.. 以下代码执行结果

var uname = ‘jack‘
function change() {
    alert(uname) // ?
    var uname = ‘lily‘  //加了var定义为函数变量
    alert(uname)  //?
}
change()
分别alert出 undefined,lily,(变量声明提前问题)

 

3.冒泡排序

 

function fun(){
                var arr=[1,2,5,47,1,3,5,7,9,4,1,2];
                //循环在arr中取值,i从0,同事创建空数组result
                for(var i=0,result=[];i<arr.length;i++){
                    //循环便利result,j从0
                    for(var j=0;j<result.length;j++){
                        //如果result中当前元素等于arr中当前的元素  arr的这个数在result的数组中存在了
                        if(arr[i]==result[j]){
                            break;//退出循环
                        }
                        
                    }//循环遍历结束
                    if(j==result.length){//如果j等于result的length 表示这个元素在新数组中不存在
                        result[result.length]=arr[i];
                    
                    }
                    
                }//遍历结束
           
                  console.log(result);//给出返回值
            }

 

4.数组去重

 

 

     function max_min(){//对于number数组中的大数据做从大到小的排序  (升序)
            var myarry=new Array(10);
            for (var i=0;i<10;i++){
            myarry[i]=Number(prompt("请输入第"+(i+1)+"个数"));
          }
            document.write(myarry+"<br>");
          for(var j=1;j<myarry.length;j++){//外层循环控制比较的轮数
              for(var n=0;n<myarry.length-j;n++){//内层循环控制遍历每个元素
                  if(myarry[n]>myarry[n+1]){//如果数组中前面一个值大于后面一个值;则交换前后两个值
                      var temp;
                      var temp=myarry[n];
                      myarry[n]=myarry[n+1];
                      myarry[n+1]=temp;
                      
                  }
              }
          }
        
      
          console.log(myarry)
      }

 

5 块级元素水平垂直居中的方法有哪些(三个方法)
让div等块级元素水平和垂直都居中,即永远处于屏幕的正中央,当我们做如登录块时非常有用!
实现一、原理:要让div等块级元素水平和垂直居中,必需知道该div等块级元素的宽度和高度,然后设置位置为绝对位置,距离页面窗口左边框和上边框的距离设置为50%,这个50%就是指页面窗口的宽度和高度的50%,最后将该div等块级元素分别左移和上移,左移和上移的大小就是该div等块级元素宽度和高度的一半。

.mycss{ 

   width:300px;  

   height:200px;  

   position:absolute;  

   left:50%;  

   top:50%;  

   margin:-100px 0 0 -150px 

}

6.2.split()和join()的区别?

 

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

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

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

var a=new Array();

a[0]="Xhtml";

a[1]="CSS";

a[2]="javascript";

a.join("-->");

"XHTML-->CSS-->JavaScript"

split()方法:用于把一个字符串分割成字符串数组. 

var str="aaa,bbb,ccc,ddd";

str.split(",");

["aaa", "bbb", "ccc", "ddd"]

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

 

7.HTML中放入CSS样式的几种方式。

内联样式:style=”属性:属性值;”

内部样式:<style>选择器{属性:值;}</style>

外部样式:<link href="css/style.css" rel="stylesheet" type="text/css">

 

8.行内元素有哪些,块级元素有哪些,空元素(单标签)有哪些,请举例说明,每种至少3个?

 

         行内元素:<a>,<span>,<i>,<em>,<strong>,<label>,<code>,

 

<img>,<input>,<select>,<textarea>,<button>(在一行中显示,不能设置标签的宽高,只有当一行中)的内容容纳不下的时候才会进行换行)

 

块级元素:<div>,<p>,<h1>...<h6>,<ol>,<ul>,<dl>,<table>,<form>(自己可以独占一行·,可以设置标签的宽高)

 

空元素(单标签):<br>,<hr>,<img>,<input>,<link>,<meta>

9.写出以下代码依次输出的结果:__,__,__,__;

var a=10;//全局变量

sayHi();//函数调用

function sayHi(){

  var a=a+10;//函数变量的声明此时a输出的值为undefined

  alert(a);//所以此时a显示为NaN

  return a;//返回当前a的值,返回值为10

}

alert(a);//输出a的值为函数的值为NaN

alert(sayHi()+10);值为NaN

10.列举三种强制转换和两种隐式转换的方式。

强制转换:Numble();Boolean();ParseInt();

隐式转换:字符串+数字,==比较

 

 

以上是关于前端面试题的主要内容,如果未能解决你的问题,请参考以下文章

前端面试题之代码输出篇

前端面试题之手写代码篇

面试题 TypeScript 前端面试题 由浅到深

前端技能树,面试复习第 54 天—— 手写代码:情景题

前端面试题

前端经典面试题-代码