资讯专栏INFORMATION COLUMN

javascript面试题刷

cyqian / 1219人阅读

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

javascript前端面试题汇总 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/99633.html

相关文章

  • 一道面试题引发的思考 --- Event Loop

    摘要:想必面试题刷的多的同学对下面这道题目不陌生,能够立即回答出输出个,可是你真的懂为什么吗为什么是输出为什么是输出个这两个问题在我脑边萦绕。同步任务都好理解,一个执行完执行下一个。本文只是我对这道面试题的一点思考,有误的地方望批评指正。 想必面试题刷的多的同学对下面这道题目不陌生,能够立即回答出输出10个10,可是你真的懂为什么吗?为什么是输出10?为什么是输出10个10?这两个问题在我脑...

    betacat 评论0 收藏0
  • 前端面试系列--前言篇

    摘要:这个系列的文章将记录我准备春招的整个过程,我会将自己学习到的新知识记录在这个系列里文章目录前言说明准备方向目标前言说明作为半个科班出身学数学的应届生,在学习计算机的时候还是比较吃力的,从今年月份开始接触前端,到现在也有个月左右了。 这个系列的文章将记录我准备春招的整个过程,我会将自己学习到的新知识记录在这个系列里 文章目录 前言说明 准备方向 目标 前言说明   作为半个科班出身...

    sshe 评论0 收藏0
  • 前端面试系列--前言篇

    摘要:这个系列的文章将记录我准备春招的整个过程,我会将自己学习到的新知识记录在这个系列里文章目录前言说明准备方向目标前言说明作为半个科班出身学数学的应届生,在学习计算机的时候还是比较吃力的,从今年月份开始接触前端,到现在也有个月左右了。 这个系列的文章将记录我准备春招的整个过程,我会将自己学习到的新知识记录在这个系列里 文章目录 前言说明 准备方向 目标 前言说明   作为半个科班出身...

    zsirfs 评论0 收藏0
  • 前端面试系列--前言篇

    摘要:这个系列的文章将记录我准备春招的整个过程,我会将自己学习到的新知识记录在这个系列里文章目录前言说明准备方向目标前言说明作为半个科班出身学数学的应届生,在学习计算机的时候还是比较吃力的,从今年月份开始接触前端,到现在也有个月左右了。 这个系列的文章将记录我准备春招的整个过程,我会将自己学习到的新知识记录在这个系列里 文章目录 前言说明 准备方向 目标 前言说明   作为半个科班出身...

    Freelander 评论0 收藏0

发表评论

0条评论

cyqian

|高级讲师

TA的文章

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