业界动态
JavaScript基本的面试题及答案
2024-11-26 07:37

1、使用typeof bar==="object"来确定bar是否是对象的潜在陷阱是什么?如何避免这个陷阱?

Javas<em></em>cript基本的面试题及答案

例:

var bar=null;

console.log(typeof bar==="object");

输出结果:true;

解释:在javascript中null被认为是对象

如果要避免该陷阱,则还需要判断bar是否为null。

例:

var bar=null;

console.log((bar!==null)&&(typeof bar==="object"));

输出结果:false

2、下面的代码在控制台输出什么结果,为什么?

 解释:

var a=b=3的声明是b=3,var a=b的简写,b是全局变量(因为它没有前缀var关键字),因此它的作用域为匿名函数之内和匿名函数之外;而a的定义为局部变量,因此它的作用域只在匿名函数之内,而输出结果语句是在闭包之外,因此typeof a!=='undefined'的输出结果为true,在匿名函数之内的输出结构则为false.

注:1、这个题的关键在var a=b=3这句话的理解

       2、在严格模式下(即使用use strict),语句var a=b=3将生成ReferenceError:b is not defined的运行时错误,从而避免任何否则可能导致的headfakes/bug.

3、下面的代码将输出什么到控制台,为什么?

 

解释:在外部函数中,this和self都指向的是myObject对象,所以输出结果都指向的是bar;在内部函数中,this指向的是其匿名函数,而匿名函数中并没有定义foo,因此输出结果为undefined,而self变量相对于内部函数而言是全局变量,其所指向的是myObject对象,因此其输出结果为:bar.

注:该题的关键点在于对this的理解,但是this在Javascript中又是一个很难理解的东西,通过学习和别人的总计,大致对this在不同的环境中的意义做了总结,大致如下:

    1、在HTML标签中(例:<button onclick="calc(this)">提交</button>),this指代当前触发事件元素对象本身;

    2、所有匿名函数的回调或者自调,内部的this指向的是window;

    3、在程序运行时,this指代正在调用方法的对象(.之前的对象);

4、在Javascript源文件的开头包含use strict有什么意义和好处?

    答:use strict是一种在Javascript代码运行时自动实行更严格解析和错误处理的方法,那些被忽略或默默失败了的代码错误,会产生错误或抛出异常。通常而言,这是一个很好的做法。

    严格模式的主要优点包括:

        1、使调试更加容易。那些被忽略或默默失败了的代码错误,会产生错误或抛出异常,因此今早提醒你代码中的问题,你才能更快的指引到它们的源代码

        2、防止意外的全局变量。如果没有严格模式,将值分配给一个未声明的变量会自动创建该名称的全局变量。这是Javascript中最常见的错误之一。在严格模式下,这样做的话会抛出错误。

        3、消除this强制。如果没有严格模式,引用null或未定义的值到this值会自动强制到全局变量。这可能会导致许多令人头痛的问题和让人恨不得拔自己头发的bug。在严格模式下,引用null或未定义的this值会抛出错误。

        4、不允许重复的属性名称或者参数值。当检测到对象(例如:var object={foo:“bar”,foo:"baz"})中重复命名的属性,或检测到函数中(例如:function foo(var1,var2,var1){})重复命名的参数时,严格模式会抛出错误,因此捕捉几乎可以肯定是代码中的bug可以避免浪费大量的跟踪时间。

        5、使用eval()更安全。在严格模式和非严格模式下,eval()的行为方式有所不同。最显而易见的是,在严格模式下,变量和声明在eval()语句内部的函数不会再包含范围内创建(它们会在严格模式下的包含范围中被创建,这也是一个常见的问题源。)

        6、在delete使用无效时抛出错误。delete操作符(用于从对象中删除属性)不能用再对象不可配置的属性上。当试图删除一个不可配置的属性时。非严格代码将默默地失败,而严格模式将在这样的情况下抛出异常。

5、考虑以下两个函数,它们会返回相同的东西吗?为什么相同或为什么不同?

解释:

分号在Javascript中是一个可选项(尽管省略它们通常是非常糟糕的形式)。其结果就是,当碰到foo2()中包含return语句的代码行(代码行上没有任何其它代码),分号会立即自动插入到返回语句之后。也不会抛出错误,因为代码的其余部分是完全有效的,即使它没有得到调用或做任何事情(相当于它就是一个未使用的代码块,定义了等同于字符串“hello”的属性bar)。这种行为也支持放置左括号于Javascript代码行的末尾,而不是新代码行开头的约定。正如这里所示,这不仅仅是Javascript中的一个风格偏好。

6、NaN是什么?它的类型是什么?你如何可靠的测试一个值是否等于NaN?

答:NaN属性代表一个“不是数字”的值。这个特殊的值是因为运算不能执行而导致的,不能执行的原因要么是因为其中的运算对象之一非数字(例如:“abc”/3),要么是因为运算结果为非数字(例如:除数为0)。虽然这看上去很简单,但NaN有一些令人惊讶的特点,如果你不知道它的话,可能会导致令人头痛的bug。

    首先,NaN和任何东西做全等比较,包括它自身,结果返回的都为false,一种可靠的办法来测试一个数字是否是NaN,是使用函数isNaN(),但即使使用isNaN()依然并非是一个完美的解决方案。一个更好的解决办法是使用value!=value,如果值等于NaN,只会产生true。另外,ES6提供了一个新的Number.isNaN()函数,这是一个不同的函数,并且比老的全局isNaN()函数更可靠。

7、下列代码输出什么?为什么?

Javascript中的数字和浮点精度的处理相同,因此可能不会总产生预期的结果。

8、判断值x是否为整数的方法?

答:1、在ECMAscript6中使用number.isInteger()方法判断,如果是整数,则返回true,如果不是,则返回false.

       注: 和正负 不是整数

        例:number.isInteger(25)//true;

               number.isInteger(25.0)//true;

               number.isInteger(25.1)//false;

               number.isInteger("25")//false;

               number.isInteger(true)//false;

        2、function isInteger(x){return (x^0)===x;}

        3、function isInteger(x){return Math.round(x)===x};

         注:Math.ceil()和Math.floor()等同于Math.round()

        4、function isInteger(x){return (typeof x==="number")&&(x%1===0)}

        错误方法:function isInteger(x){return parseInt(x,10)===x;}

        解释:因为当x的取值足够大时,这个方法就会出错,因为当X值足够大时,它的字符串就会表达为指数形式,例如:1e+21,当使用parseInt()去判断时,输出的结果为1.

9、下列代码的输出结果是什么?为什么?

解释:1和4之所以放到前面,是因为他们通过简单调用console.log()而没有任何延迟输出的

           2之所以放在3的后面,是因为2是延迟了1000毫秒(即1秒)之后输出的,而3是延迟了0毫秒之后输出的。

    以上就是本篇文章【JavaScript基本的面试题及答案】的全部内容了,欢迎阅览 ! 文章地址:http://lanlanwork.gawce.com/news/10285.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 阁恬下移动站 http://lanlanwork.gawce.com/mobile/ , 查看更多   
最新新闻
女星金子涵微博全部清空,疑似退圈
4月3日,有网友发现女艺人金子涵微博已全部清空,疑似退圈。公开资料显示,金子涵是乐华娱乐旗下艺人,2020年参加爱奇艺女团选秀
北京市连续第二年出台支持创新医药发展的专项政策!
北京市连续第二年出台支持创新医药发展的专项政策。4月7日,北京市医保局等九部门发布《北京市支持创新医药高质量发展若干措施(
延长手机电池寿命,手机电量剩多少时充电效果才是最好呢?手机电量多少时充电最好「延长手机电池寿命,手机电量剩多少时充电效果才是最好呢?」
    平时我们充电大家都是觉得充的越满越好,其实这是大家存在的一个很大的错误。    有研究表明:如果一个手机夜晚一直
miui秒解bl锁_小米最新秒解锁BL分析申请解锁小米手机「miui秒解bl锁_小米最新秒解锁BL分析」
这周我解了两台K30S的BL锁,来谈谈秒解技巧 全凭本人想象以及猜测,不含官方说法 官方解锁申请地址 http://www.miui
9800x3D千元座驾,微星MAG B850M MORTAR WIFI 迫击炮主板测试
AMD锐龙9000系列上市以来,热度一直相当高,这还得感谢英特尔酷睿Ultra 200S系列U的给力性能,玩游戏选AMD就对了,搭配主板的话
手机快充充电时手机发热是怎么回事手机充电发热正常吗「手机快充充电时手机发热是怎么回事」
手机快充充电时手机发热的原因可能是快速充电技术、散热不良、高温环境、电池老化等。详细介绍:1、快速充电技术,快充技术通过
手机辐射污染奔迈手机「手机辐射污染」
1、手机辐射污染09应化60号赵成录 a.手机辐射基本概况b.一些手机的辐射值c.手机辐射的危害d.防范措施基本概况 手机通过电磁波进
斗破苍穹:大美女花锦最后怎么样了?是死了还是活到大结局了?
  斗破苍穹动漫年番新预告已经出来了,很多人应该都发现了,那就是新预告一出,登场了一个新的美女。这个美女还是一个御姐,还
索尼手机频频削减机型 5G款被指落后主流厂商2年索尼新手机「索尼手机频频削减机型 5G款被指落后主流厂商2年」
■本报记者 贾 丽索尼曾经是手机市场的霸主,不过近几年索尼品牌手机已逐渐淡出人们的视野。目前,索尼众多业务的业绩出现下滑,
LCD党狂喜,史上最小5G手机来了:“小而美”的品牌也能活?小众手机「LCD党狂喜,史上最小5G手机来了:“小而美”的品牌也能活?」
今年的手机市场可以说是彻底和小屏杠上了,vivo、小米、OPPO等主流品牌纷纷推出了小屏旗舰手机,这些手机无论是性能还是影像,表