幾例前端面試基礎(chǔ)題

本簡(jiǎn)書(shū)中所選的關(guān)于前端的基礎(chǔ)題目均來(lái)自微信公眾號(hào)《前端大全》和《前端JavaScript》

直接上代碼desu

/***************************經(jīng)典面試題*******************************/
//判斷引用類(lèi)型
/*var obj={},arr=[],fun=function(){};
console.log(Object.prototype.toString.call(obj));
console.log(Object.prototype.toString.call(arr));
console.log(Object.prototype.toString.call(fun));
console.log(typeof asss)

//
var myObject={
    foo:'bar',
    func:function(){
        var self=this;
        (function(test){
            console.log(test.foo);
            console.log(self.foo);
        }(self))
    }
}
myObject.func();

////IIFE
//循環(huán)中定時(shí)輸出數(shù)據(jù)項(xiàng)
for(var i=0;i<5;i++){
    (function(i){
        setTimeout(function(){
            console.log(i)
        },1000)
    }(i))
}

//jQuery/Node插件和模塊開(kāi)發(fā)中避免變量污染
(function($){

}(jQuery))

//JS解析器自動(dòng)填充分號(hào)機(jī)制
function foo1(){
    return {
        bar:1
    };
}
function foo2(){
    return
    {
        bar:1
    };
}//返回undefined
//對(duì)于return break continue 若后面緊接換行檀夹,解析器會(huì)自動(dòng)在后面填充分號(hào)

(function(){
    console.log(1);
    setTimeout(function(){console.log(2)},1000);
    setTimeout(function(){console.log(3),0});
    console.log(4);
}())//1 4 3 2


//判斷一個(gè)字符串是不是回文字符竄
function isPalindrome(str) {
    return (str == str.split('').reverse().join(''));
}
alert(isPalindrome('上海自來(lái)水來(lái)自海上'))

//array.reverse()不創(chuàng)建新數(shù)組筋粗,改變?cè)瓟?shù)組
var arr1 = "john".split(''); 
var arr2 = arr1.reverse(); 
var arr3 = "jones".split(''); 
arr2.push(arr3);//此處推進(jìn)了一個(gè)數(shù)組作為arr2的一個(gè)元素
console.log("array 1: length=" + arr1.length + " last=" + arr1.slice(-1));
console.log("array 2: length=" + arr2.length + " last=" + arr2.slice(-1));



//空數(shù)組與空對(duì)象的布爾類(lèi)型轉(zhuǎn)換
console.log([]==false,Number([]));//true
console.log({}==false,Number({}));//false
console.log(Boolean([]));//true
console.log(Boolean({}));//true
console.log(1==true,'a'==true,2==true);//true,false,false
//空數(shù)組炸渡,空對(duì)象對(duì)應(yīng)的布爾值類(lèi)型均為true娜亿,因此在if從句判斷中,空數(shù)組空對(duì)象均可以視為true蚌堵;
//與布爾值進(jìn)行比較時(shí)买决,符號(hào)兩邊均轉(zhuǎn)化為數(shù)字,即調(diào)用Number()函數(shù)吼畏,(注意不是調(diào)用valueOf()函數(shù))




//為對(duì)象設(shè)置屬性時(shí)督赤,JavaScript會(huì)隱式調(diào)用toString()函數(shù)
var o={};
var b={key:'b'};
var c={key:'c'};
o[b]=123;//隱式調(diào)用后b轉(zhuǎn)化為[object Object],下同泻蚊,故與下式實(shí)為同一屬性
o[c]=456;
console.log(o[b]);//456

////堆棧溢出及優(yōu)化
//溢出
function isEven(num){
    if(num == 0){return true;}
    if(num == 1){return false;}
    return isEven(Math.abs(num)-2);

}
console.log(isEven(100000))


//閉包函數(shù)優(yōu)化
function isEven(num){
    function isEvenInner(num){
        if(num === 0){return true;}
        if(num === 1){return false;}
        return function(){
            return isEvenInner(Math.abs(num)-2);
        }
    }

    function simplify(func,num){
        var value=func(num);
        while(typeof value == 'function'){
            value=value();
        }
        return value;
    }

    return simplify.bind(null,isEvenInner)(num)
}

console.log(isEven(100000));//這種方法num太大也不可以
*/

//調(diào)用定時(shí)器

//溢出
/*function factorial(n){
    if(n === 1) {return 1;}
    return n*factorial(n-1);
}
console.log(factorial(10000));


//尾調(diào)用優(yōu)化
function tailFactorial(n, total) {
  if (n === 1) return total;
  return tailFactorial(n - 1, n * total);
}
console.log(tailFactorial(5,1))
function factorial(n) {
  return tailFactorial(n, 1);
}

console.log(factorial(10000))

//currying
function currying(fn,n){//柯里化要綁定的參數(shù)
    return function(m){//柯里化的函數(shù)躲舌,m對(duì)應(yīng)輸入的唯一一個(gè)參數(shù)
        return fn.call(this,m,n)    
}//柯里化
}
var factorial_1=currying(tailFactorial,1);
console.log(factorial_1(5));*/




/*****************************關(guān)于作用域和VO、AO的幾題*****************************/
/*function test(){
    console.log(foo);//function hello
    console.log(bar);//undefined
    var foo='Hello';
    console.log(foo);//Hello
    var bar=function(){
        return 'world';
    }
    function foo(){
        return 'hello'
    }
}
test();

//變量編譯與執(zhí)行
var str='a';
function test(){
    console.log(str);
    var str='b';
    console.log(str);
}
test();//試下改為 srt='b'?

//連續(xù)賦值對(duì)作用域的影響
(function(){
    var user=author='a';
}());
console.log(author);
console.log(user);
//連續(xù)賦值中只有user是通過(guò)var變量聲明的性雄,聲明在了私有作用域中没卸,所以author在全局作用域中

//函數(shù)間的變量訪問(wèn)關(guān)系
var user='a';
function first(){
    console.log(user)
}
function second(){
    var user='b';
    first();
}
second();

//形參與作用域
var user='a';
function changeUser(user){
    user='b'                //形參不能被外部作用域訪問(wèn),等價(jià)于var user=user; user='b';
}
changeUser(user);
console.log(user);

//VO建立過(guò)程1
function test(){
    function a(){
        return 1
    }
    alert(a());
    function a(){
        return 2 
    }
    alert(a())
}
test()

//VO建立過(guò)程2
function test(){
    var a=1;
    alert(a);
    var a=2;
    alert(a);
}
test()

//形參與作用域2
var user='a';
function test(user){
    console.log(user);       //等價(jià)于var user=user;console.log(user);var user='b';console.log(user);
    var user='b';
    console.log(user)
}
test(user);

//函數(shù)名與作用域
var user='a';
function test(){
    user='b';
    return;
    function user(){
        console.log('c')
    }
}
test();
console.log(user);
//test函數(shù)執(zhí)行順序:user先被聲明為局部函數(shù)秒旋,之后修改為'b'约计,但仍為局部變量,之后返回滩褥,故全局變量中user不變病蛉。*/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子铺然,更是在濱河造成了極大的恐慌俗孝,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,423評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件魄健,死亡現(xiàn)場(chǎng)離奇詭異赋铝,居然都是意外死亡嗽冒,警方通過(guò)查閱死者的電腦和手機(jī)疫诽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,147評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)屉符,“玉大人析恋,你說(shuō)我怎么就攤上這事良哲。” “怎么了助隧?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,019評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵筑凫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我并村,道長(zhǎng)巍实,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,443評(píng)論 1 283
  • 正文 為了忘掉前任哩牍,我火速辦了婚禮棚潦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘膝昆。我一直安慰自己丸边,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,535評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布外潜。 她就那樣靜靜地躺著原环,像睡著了一般。 火紅的嫁衣襯著肌膚如雪处窥。 梳的紋絲不亂的頭發(fā)上嘱吗,一...
    開(kāi)封第一講書(shū)人閱讀 49,798評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音滔驾,去河邊找鬼谒麦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哆致,可吹牛的內(nèi)容都是我干的绕德。 我是一名探鬼主播,決...
    沈念sama閱讀 38,941評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼摊阀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼耻蛇!你這毒婦竟也來(lái)了踪蹬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,704評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤臣咖,失蹤者是張志新(化名)和其女友劉穎跃捣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體夺蛇,經(jīng)...
    沈念sama閱讀 44,152評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疚漆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,494評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刁赦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娶聘。...
    茶點(diǎn)故事閱讀 38,629評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖甚脉,靈堂內(nèi)的尸體忽然破棺而出丸升,到底是詐尸還是另有隱情,我是刑警寧澤牺氨,帶...
    沈念sama閱讀 34,295評(píng)論 4 329
  • 正文 年R本政府宣布发钝,位于F島的核電站,受9級(jí)特大地震影響波闹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涛碑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,901評(píng)論 3 313
  • 文/蒙蒙 一精堕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蒲障,春花似錦歹篓、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至毙籽,卻和暖如春洞斯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坑赡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,978評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工烙如, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毅否。 一個(gè)月前我還...
    沈念sama閱讀 46,333評(píng)論 2 360
  • 正文 我出身青樓亚铁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親螟加。 傳聞我的和親對(duì)象是個(gè)殘疾皇子徘溢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,499評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容