1. 程式人生 > >總結一些關於前端面試的知識點1

總結一些關於前端面試的知識點1

最近準備去面試了,總結一下知識點吧,不當之處請指出。祝大家前程似錦,廢話不多說上東西。

1.HTML CSS JS的基礎知識 1.1 什麼是DOM DOM是一套對文件的內容進行抽象和概念化的方法。 ——《JavaScript DOM 程式設計方法》 JS操作HTML的介面 ——自己總結的不當之處請指出

1.2 CSS層疊性的問題

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
    <style>
        #bgColor{
            background-color: black;
        }
        .bgColor{
            background-color: aqua;
        }
        div{
            background-color: blue;
        }
        .bgColorI{
            background-color: blueviolet !important;
        }
    </style>
<body>
      <div id="bgColor" class="bgColor bgColorI" style="height:50px;width:50px;background-color: brown"></div>
</body>
</html>

層疊順序是 !important>>>>>行內式>#ID>.Class>Tag 。組合的寫法也可以按照這個權重進行推算。

1.3 CSS中的水平居中,垂直居中問題

 1.水平居中
	    text-align:center;
	    margin:0 auto;
	    元素絕對定位left:50%;margin-left:-元素width的一半
	  2.垂直居中
	  	 line-height:元素的高度;
	  	 元素絕對定位top:50%;margin-top:-元素height的一半
	  	 vertical-align:middle;
	  3.銀彈:flex佈局 //一些低版本的瀏覽器不支援
	  這些方法有一些使用的細節,程式碼我就不貼了,可以自行搜尋

1.4如何清除浮動 偽元素清除浮動,說一種就應該就夠了

.clearfix:before, .clearfix:after {
    content: "";
    display: table;
}

.clearfix:after {
    clear: both;
}

1.5 JS中如何判斷一個屬性在例項中還是在原型鏈中 利用hasOwnProperty這個方法返回的一個布林值 // 在自身例項中返回true,在原型中返回false,都不在也返回false

function Text(name,age){
            this.name = name;
            this.age = age;
        
        }
        Text.prototype.work = function(a){
             return a;
        }
        var a = new Text(1,2);
         function ispro(obj,pro){
             
            if(pro in obj){  
                return (obj.hasOwnProperty(pro));
            }else{
            	console.log('原型例項中都不存在');
            	return false;
            }
         }
          
         console.log(ispro(a,'work'));//false    在原型中
         console.log(ispro(a,'name'));//true     在例項中
         console.log(ispro(a,'age'));//true			在例項中
         console.log(ispro(a,'bbb'));//例項和原型鏈中都不存在 false

1.6 JS中閉包的作用 1.訪問區域性變數

function fn(){
           var a = 9999;
       }
       console.log(a); //a is not defined
        fn();
    function fn1(){
           var a = 9999;
           console.log(a) // 9999
       }
      
       fn1();

2.讓區域性變數儲存起來,使用不當的閉包會引起記憶體洩漏

 function fn(){
            var a = 1;
           return function(){
                console.log(a);
                a++;
                return a;
            }
            
        }
       var a = fn();
       a(); //1
       a(); //2
       a(); //3
       a(); //4
       var b = fn();
       b(); //1
       b(); //2
       b(); //3
       b(); //4

1.7 JS中 ==,===有什麼區別 嚴格等於和不嚴格等於的區別

console.log(“1”==1); //true console.log(“1”===1); //false

以上面的String與number比較的程式碼為例 ==時,如果型別不同會轉換成相同型別進行比較 ===時,如果型別不同直接返回false 有一個比較經典的案例

function Obj(){
           return{
               a:0,
               toString:function(){
                   this.a++;
                   return this.a;
               }
           }
       }
       var a = new Obj();
       console.log(a== 1&&a== 2&&a== 3); //true

這個是物件與數字之間比較的時候,重寫了物件裡面的toString方法導致a== 1&&a== 2&&a== 3為 true

1.8 JS浮點數字計算導致精度丟失的問題 其實這個問題不光JS中有,其他語言也有,像JAVA中也有,揪其原因是因為底層的二進位制無法精確表示這種浮點型別的數字。在這裡不談有興趣的同學可以去了解一下,不過JAVA中有BigDecimal這種東西可以用,這裡僅展示一些小數,很大的整數也會有這種問題,看程式碼吧

  var a = 0.1;
   var b = 0.11;
   console.log(a+b); //0.21000000000000002
   console.log(a-b); //-0.009999999999999995
   var a = 0.01;
  var b = 0.11;
  console.log(a+b);//0.12
  console.log(a-b);//-0.1
  var a=7.8; 
  var b = 0.9;
  console.log(a+b);//8.7
  console.log(a-b);//6.8999999999999995
  var a =2.8;
  var b = 0.9;
  console.log(a+b);//3.6999999999999997
  console.log(a-b);//1.9

這就非常有意思了,可以去試一下哦。這個可能就需要了解一下底層二進位制表示數字的方法了,學無止境不是麼?至於JS中的解決方法有幾個思路,1.將浮點數字轉化成整數計算,2.四捨五入。方法挺多大家可以自行百度。當然前端也不可能有大量的這種數字計算。

1.9 常見的瀏覽器相容性的問題 其實這種東西真的太多了,寫不完。隨便說幾個吧,有興趣的同學可以留言,這一篇就寫到這裡了

   各個瀏覽器預設的一些屬性
   CSS3中的一些屬性的相容性寫法
   谷歌瀏覽器中select裡面option新增click事件無效
   audio標籤谷歌中不支援自動播放
    details標籤等等等等