资讯专栏INFORMATION COLUMN

javascript前端面试题汇总

RancherLabs / 1856人阅读

摘要:最后代码执行代码执行,,调用优先顺序成员访问带参数列表函数调用无参数列表查找一个字符串中指定字符出现的位置经典问题

1、 JavaScript中如何检测一个变量类型是String?请写出函数实现
//分析:String的两种创建方法:
//第一种方法:
var str = "str" //str只是一个以String为数据类型的值,但并不属于String对象的实例
//第二种方法:
var strObj = new String("strObj") //此时的strObj是String对象的一个实例

//针对第一种创建方式,采用typeof检测,此时采用instanceof != String
//针对第二种创建方式,采用instanceof检测,此时采用typeof检测出来的是Object

function isString(str){
    return (typeof str).toLowerCase() === "string" || str instanceof String
}
2、原型和原型链经典题目
function Foo(){
    getName = function(){ alert(1)}
}

Foo.getName = function(){alert(2)}

Foo.prototype.getName = function(alert(3))

var getName = function(){alert(4)}

function getName(){alert(5)}


//问题:请给出下面运行的结果
Foo.getname();
getName();
Foo().getName();
getName();
New Foo.getName();
new Foo().getName();
new new Foo().getName();

进入环境(代码未执行,已编译):

VO:{
    Foo:{
    
    getName:
    return this
    }
    getName:
    
}

代码执行1Foo.getName()

VO:{
    Foo:{
    ,
    getName:,
    return this
    },
    getName:
}

代码执行2Foo.prototype.getName = function(){alert(3)}

VO:{
    Foo:{
    
    getName:,
    prototype:{
        getName:
    }
    return this
    }
    getName:
}

代码执行3var getName = function(){alert(4);};

VO:{
    Foo:{
    
    getName:,
    prototype:{
        getName:
    }
    return this
    }
    getName:
}

代码执行4Foo.getName()

VO:{
    Foo:{
    
    getName:,
    prototype:{
        getName:
    }
    return this
    }
    getName:
}

代码执行5getName() //2
代码执行6Foo().getName()

Foo().getName() == window.getName()
//同时注意:这里由于Foo()调用,导致VO发生了变化。最后alert(1)
VO:{
    Foo:{
    
    getName:,
    prototype:{
        getName:
    }
    return this
    }
    getName:
}

代码执行7getName() //1
代码执行8,9,10

//调用优先顺序
成员访问 > new(带参数列表)>函数调用>new(无参数列表)
3、this
var name = "the window"
var obje = {
    name:"myObject",
    getNameFunc:function(){
        return function(){
            return this.name
        }
    }
}
obje.getNameFunc()()
4、查找一个字符串中指定字符出现的位置
var stringValue = "lorem ipsum dolor sit amet ,consectent adipisicing elit"
var array = []
var pos = stringValue.indexOf("e")
while(pos > -1){
    array.push(pos)
    pos = stringValue.indexOf("e",++pos)
}
5、this经典问题
var a =1;
function foo(a,b){
    a = 2;
    console.log(a);
    var a;
    console.log(a);
    arguments[0] = 3
    console.log(a,this.a,b)
}
//2
//2
//2 1 undefined

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99612.html

相关文章

  • 你不能错过的前端面试合集

    摘要:收集的一些前端面试题从面试题发现不足,进而查漏补缺,比通过面试更难得及各大互联网公司前端笔试面试题篇及各大互联网公司前端笔试面试题篇面试题个和个经典面试题前端开发面试题如何面试前端工程师很重要个变态题解析如何通过饿了么面试轻 收集的一些前端面试题 从面试题发现不足,进而查漏补缺,比通过面试更难得 1 BAT及各大互联网公司2014前端笔试面试题--Html,Css篇 2 BAT...

    ninefive 评论0 收藏0
  • 你不能错过的前端面试合集

    摘要:收集的一些前端面试题从面试题发现不足,进而查漏补缺,比通过面试更难得及各大互联网公司前端笔试面试题篇及各大互联网公司前端笔试面试题篇面试题个和个经典面试题前端开发面试题如何面试前端工程师很重要个变态题解析如何通过饿了么面试轻 收集的一些前端面试题 从面试题发现不足,进而查漏补缺,比通过面试更难得 1 BAT及各大互联网公司2014前端笔试面试题--Html,Css篇 2 BAT...

    darkbaby123 评论0 收藏0
  • 前端最强面经汇总

    摘要:获取的对象范围方法获取的是最终应用在元素上的所有属性对象即使没有代码,也会把默认的祖宗八代都显示出来而只能获取元素属性中的样式。因此对于一个光秃秃的元素,方法返回对象中属性值如果有就是据我测试不同环境结果可能有差异而就是。 花了很长时间整理的前端面试资源,喜欢请大家不要吝啬star~ 别只收藏,点个赞,点个star再走哈~ 持续更新中……,可以关注下github 项目地址 https:...

    wangjuntytl 评论0 收藏0
  • 前端资源系列(4)-前端学习资源分享&前端面试资源汇总

    摘要:特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 本以为自己收藏的站点多,可以很快搞定,没想到一入汇总深似海。还有很多不足&遗漏的地方,欢迎补充。有错误的地方,还请斧正... 托管: welcome to git,欢迎交流,感谢star 有好友反应和斧正,会及时更新,平时业务工作时也会不定期更...

    princekin 评论0 收藏0
  • 前端开发面试链接

    摘要:手册网超级有用的前端基础技术面试问题收集前端面试题目及答案汇总史上最全前端面试题含答案常见前端面试题及答案经典面试题及答案精选总结前端面试过程中最容易出现的问题前端面试题整理腾讯前端面试经验前端基础面试题部分最新前端面试题攻略前端面试前端入 手册网:http://www.shouce.ren/post/index 超级有用的前端基础技术面试问题收集:http://www.codec...

    h9911 评论0 收藏0

发表评论

0条评论

RancherLabs

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<