Javascript面試題

1 引用類(lèi)型和基本類(lèi)型

1.1 原始對(duì)象
var a = 1;
a.a = 2;
console.log(a.a); //undefined
1.2 引用類(lèi)型
var a = {n:1};
var b = a;
a.x = a = {n:2};

console.log(a.x);//undefined
console.log(b.x);//[object object]

2 類(lèi)型轉(zhuǎn)換

運(yùn)算過(guò)程的轉(zhuǎn)換原則:

  • string與number相加,變成 string
  • string與number相減,變成number
function foo1(a) {
  return a + '01';
}
function foo2(a) {
  return  '010' - 010;
}
foo1(01);// '101'
foo2(010);// 0開(kāi)頭代表八進(jìn)制,010表示8, 輸出2

3 寫(xiě)一個(gè)function,清楚字符串前后的空格

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^\s+/, "").replace(/\s+$/, "");
  }
}
//test the function
var str = "   test string   ".trim(); 
console.log(str === "test string");//true

4 寫(xiě)一個(gè)function,實(shí)現(xiàn)深拷貝

function deepCopy(obj) {
  var ret, k, b;
        ret = (obj instanceof Array) ? [] : {};
  for (k in obj) {
    if (obj[k] instanceof Array || obj[k] instanceof Object) {
      //利用遞歸逐個(gè)復(fù)制obj中的屬性
      ret[k] = deepCopy(obj[k]);
    } else {
      ret[k] = obj[k];
    }
  }
  
 return ret;
}

5 數(shù)組操作

5.1 消除數(shù)組里面重復(fù)的元素
var myArray = [11,2,3,4,5,11,4,7,9];
var arr = myArray.filter(function (elem, pos, self) {
  //elem表示數(shù)組中的某一個(gè)元素,pos表示這個(gè)元素在數(shù)組中的位置,self表示這個(gè)數(shù)組
//indexOf會(huì)取得最先匹配的一個(gè)元素的位置,比如elem為11是,self.indexOf(elem) = 0
  return self.indexOf(elem) == pos;
})
console.log(arr);//[11,2,3,4,5,7,9];
5.2 給數(shù)組進(jìn)行排序
var arr = [11, 2, 28, 5, 8, 4, 3]
arr.sort(function (after, before) {
 /*after表示靠后的元素,before是考前的元素,如果返回時(shí)true,才執(zhí)行排序,最后是從小到大*/
  return after - before;
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容