几例前端面试基础题

本简书中所选的关于前端的基础题目均来自微信公众号《前端大全》和《前端JavaScript》

直接上代码desu

/***************************经典面试题*******************************/
//判断引用类型
/*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
//循环中定时输出数据项
for(var i=0;i<5;i++){
    (function(i){
        setTimeout(function(){
            console.log(i)
        },1000)
    }(i))
}

//jQuery/Node插件和模块开发中避免变量污染
(function($){

}(jQuery))

//JS解析器自动填充分号机制
function foo1(){
    return {
        bar:1
    };
}
function foo2(){
    return
    {
        bar:1
    };
}//返回undefined
//对于return break continue 若后面紧接换行,解析器会自动在后面填充分号

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


//判断一个字符串是不是回文字符窜
function isPalindrome(str) {
    return (str == str.split('').reverse().join(''));
}
alert(isPalindrome('上海自来水来自海上'))

//array.reverse()不创建新数组,改变原数组
var arr1 = "john".split(''); 
var arr2 = arr1.reverse(); 
var arr3 = "jones".split(''); 
arr2.push(arr3);//此处推进了一个数组作为arr2的一个元素
console.log("array 1: length=" + arr1.length + " last=" + arr1.slice(-1));
console.log("array 2: length=" + arr2.length + " last=" + arr2.slice(-1));



//空数组与空对象的布尔类型转换
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
//空数组,空对象对应的布尔值类型均为true,因此在if从句判断中,空数组空对象均可以视为true;
//与布尔值进行比较时,符号两边均转化为数字,即调用Number()函数,(注意不是调用valueOf()函数)




//为对象设置属性时,JavaScript会隐式调用toString()函数
var o={};
var b={key:'b'};
var c={key:'c'};
o[b]=123;//隐式调用后b转化为[object Object],下同,故与下式实为同一属性
o[c]=456;
console.log(o[b]);//456

////堆栈溢出及优化
//溢出
function isEven(num){
    if(num == 0){return true;}
    if(num == 1){return false;}
    return isEven(Math.abs(num)-2);

}
console.log(isEven(100000))


//闭包函数优化
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太大也不可以
*/

//调用定时器

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


//尾调用优化
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){//柯里化要绑定的参数
    return function(m){//柯里化的函数,m对应输入的唯一一个参数
        return fn.call(this,m,n)    
}//柯里化
}
var factorial_1=currying(tailFactorial,1);
console.log(factorial_1(5));*/




/*****************************关于作用域和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();

//变量编译与执行
var str='a';
function test(){
    console.log(str);
    var str='b';
    console.log(str);
}
test();//试下改为 srt='b'?

//连续赋值对作用域的影响
(function(){
    var user=author='a';
}());
console.log(author);
console.log(user);
//连续赋值中只有user是通过var变量声明的,声明在了私有作用域中,所以author在全局作用域中

//函数间的变量访问关系
var user='a';
function first(){
    console.log(user)
}
function second(){
    var user='b';
    first();
}
second();

//形参与作用域
var user='a';
function changeUser(user){
    user='b'                //形参不能被外部作用域访问,等价于var user=user; user='b';
}
changeUser(user);
console.log(user);

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

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

//形参与作用域2
var user='a';
function test(user){
    console.log(user);       //等价于var user=user;console.log(user);var user='b';console.log(user);
    var user='b';
    console.log(user)
}
test(user);

//函数名与作用域
var user='a';
function test(){
    user='b';
    return;
    function user(){
        console.log('c')
    }
}
test();
console.log(user);
//test函数执行顺序:user先被声明为局部函数,之后修改为'b',但仍为局部变量,之后返回,故全局变量中user不变。*/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,078评论 25 707
  • 我要永远地记住你!(iOS中几种数据持久化方案) NSKeyedArchiver 归档在iOS中是另一种形式的序列...
    其实也没有阅读 174评论 0 0
  • “坚强乐观,自信懂事,天真活泼,爱玩爱闹也是大部分留守儿童真实生活的写照。” 农村留守儿童是一个非常特殊的群体,需...
    47002c413afd阅读 300评论 0 2
  • 1、ParallaxPagerTransformer使用viewpager的PageTransformer实现的视...
    芝诺龟阅读 906评论 0 0
  • 老街旁,古桥上, 碉栏玉砌, 已失去旧模样, 灰墙青瓦, 暗淡了岁月的光彩。 云聚云散, 透出的天蓝, 还是早先的...
    fjbsoho简阅读 329评论 0 0