博主信息
sodesily
博文
3
粉絲
0
評論
0
訪問量
406
積分:0
P豆:6

前端常見的十道面試題

2019年11月12日 09:05:58閱讀數:144博客 / sodesily / web前段

前端常見的十道面試題

1、JavaScript的數據類型都有什么?
基本數據類型:String,Boolean,number,undefined,object,Null
引用數據類型:Object(Array,Date,RegExp,Function)
那么問題來了,如何判斷某變量是否為數組數據類型?
方法一.判斷其是否具有“數組性質”,如slice()方法。可自己給該變量定義slice方法,故有時會失效
方法二.obj instanceof Array 在某些IE版本中不正確
方法三.方法一二皆有漏洞,在ECMA Script5中定義了新方法Array.isArray(), 保證其兼容性,最好的方法如下:
toString.call(18);//”[object Number]”
toString.call(“”);//”[object String]”
解析這種簡單的數據類型直接通過typeof就可以直接判斷
toString.call常用于判斷數組、正則這些復雜類型
toString.call(/[0-9]{10}/)//”[object RegExp]”

if(typeof Array.isArray==="undefined"){1

Array.isArray = function(arg){
return Object.prototype.toString.call(arg)==="[object Array]"
};
}

2、已知ID的Input輸入框,希望獲取這個輸入框的輸入值,怎么做?(不使用第三方框架)
document.getElementById(“ID”).value

3、希望獲取到頁面中所有的checkbox怎么做?(不使用第三方框架)

var domList = document.getElementsByTagName(‘input’)

var checkBoxList = [];//返回的所有的checkbox
var len = domList.length;  //緩存到局部變量
while (len–) {  //使用while的效率會比for循環更高
  if (domList[len].type == ‘checkbox’) {
  checkBoxList.push(domList[len]);
  }
}

4、設置一個已知ID的DIV的html內容為xxxx,字體顏色設置為黑色(不使用第三方框架)

var dom = document.getElementById(“ID”);

dom.innerHTML = “xxxx”
dom.style.color = “#000”

5、當一個DOM節點被點擊時候,我們希望能夠執行一個函數,應該怎么做?
直接在DOM里綁定事件:


在JS里通過onclick綁定:xxx.onclick = test
通過事件添加進行綁定:addEventListener(xxx, ‘click’, test)
那么問題來了,Javascript的事件流模型都有什么?
“事件冒泡”:事件開始由最具體的元素接受,然后逐級向上傳播
“事件捕捉”:事件由最不具體的節點先接收,然后逐級向下,一直到最具體的
“DOM事件流”:三個階段:事件捕捉,目標階段,事件冒泡


6、看下列代碼輸出為何?解釋原因。

var a;

alert(typeof a); // “undefined”
//alert(b); // 報錯
b=10;
alert(typeof b);//”number”

解釋:Undefined是一個只有一個值的數據類型,這個值就是“undefined”,在使用var聲明變量但并未對其賦值進行初始化時,這個變量的值就是undefined。而b由于未聲明將報錯。注意未申明的變量和聲明了未賦值的是不一樣的。
undefined會在以下三種情況下產生:
1、一個變量定義了卻沒有被賦值
2、想要獲取一個對象上不存在的屬性或者方法:
3、一個數組中沒有被賦值的元素
注意區分undefined跟not defnied(語法錯誤)是不一樣的


7、看下列代碼,輸出什么?解釋原因。

var a = null;

alert(typeof a); //object
解釋:null是一個只有一個值的數據類型,這個值就是null。表示一個空指針對象,所以用typeof檢測會返回”object”。

8、看下列代碼,輸出什么?解釋原因。

var undefined;//此時undefined這個變量的值是undefined

undefined == null; // true
1 == true;   // true
此時會把布爾類型的值轉換為數字類型 true=1 false=0
2 == true;   // false
0 == false;  // true
0 == ‘’;     // true
NaN == NaN;  // false
[] == false; // true
[] == ![];   // true
?undefined與null相等,但不恒等(=
一個是number一個是string時,會嘗試將string轉換為number
嘗試將boolean轉換為number,0或1
嘗試將Object轉換成number或string,取決于另外一個對比量的類型
所以,對于0、空字符串的判斷,建議使用 “
=” 。“===”會先判斷兩邊的值類型,類型不匹配時為false。
那么問題來了,看下面的代碼,輸出什么,foo的值為什么?

var foo = "11"+2-"1";

console.log(foo);//111
console.log(typeof foo);
執行完后foo的值為111,foo的類型為number。

9、已知數組var stringArray = [“This”, “is”, “Baidu”, “Campus”],Alert出”This is Baidu Campus”。
答案:alert(stringArray.join(“ ”))
已知有字符串foo=”get-element-by-id”,寫一個function將其轉化成駝峰表示法”getElementById”。
//

function combo(msg){
var arr=msg.split("-");//[get,element,by,id]
for(var i=1;i<arr.length;i++){
    arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length-1);//Element
}
msg=arr.join("");//msg=” getElementById”
return msg;

}
(考察基礎API)

10、var numberArray = [3,6,2,4,1,5]; (考察基礎API)

  1. 實現對該數組的倒排,輸出[5,1,4,2,6,3]

  2. 實現對該數組的降序排列,輸出[6,5,4,3,2,1]

    function combo(msg){
    var arr=msg.split("-");
    for(var i=1;i<arr.length;i++){
    arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length-1);
    }
    msg=arr.join("");
    return msg;
    }

全部評論

文明上網理性發言,請遵守新聞評論服務協議

條評論
暫無評論暫無評論!
  • 澳洲幸运8在哪里开奖