作家
登录

25个最基本的JavaScript面试问题及答案

作者: 来源: 2017-09-15 11:56:10 阅读 我要评论

var myObject = {   
  •     foo: "bar",       
  •     func: function() {        
  •       var self = this;          
  •       console.log("outer func:  this.foo = " + this.foo);   
  •       console.log("outer func:  self.foo = " + self.foo);                
  •       (function() {     
  •            console.log("inner func:  this.foo = " + this.foo);  
  •            console.log("inner func:  self.foo = " + self.foo);           
  •       }());       
  •     }   
  • };  
  • myObject.func(); 
  • 膳绫擎的代码将输出以下内容到控制台:

    在外部函数中, this 和self 两者都指向了 myObject,是以两者都可以精确地引用和拜访 foo。

    在内部函数中, this 不再指向 myObject。其结不雅是,this.foo 没有在内部函数中被定义,相反,指向到本地的变量self 保持在范围内,并且可以拜访。 (在ECMA 5之前,在内部函数中的this 将指向全局的 window 对象;反之,因为作为ECMA 5,内部函数中的功能this 是不决义的。)

    1. outer func: this.foo = bar outer func: self.foo = bar inner func: this.foo = undefined inner func: self.foo = bar 

    4.封装JavaScript源文件的全部内容到一个函数块有什么意义及来由?

    此外, NaN 和任何器械比较——甚至是它本身本身!——结不雅是false:

    这是一个越来越广泛的做法,被很多风行的JavaScript库(jQuery,Node.js等)采取。这种技巧创建了一个环绕文件全部内容的闭包,也许是最重要的是,创建了一个私有的定名空间,大年夜而有助于避免不合JavaScript模块和库之间潜在的名称冲突。

    5.在JavaScript源文件的开首包含 use strict 有什么意义和好处?

    对于这个问题,既扼要又最重要的谜底是,use strict 是一种在JavaScript代码运行时主动实施更严格解析和缺点处理的办法。那些被忽视或默默掉败了的代码缺点,会产生缺点或抛出异常。平日而言,这是一个很好的做法。

    严格模式的一些重要长处包含:

    • 使调试加倍轻易。那些被忽视或默默掉败了的代码缺点,会产生缺点或抛出异常,是以尽早提示你代码中的问题,你才能更快地指引到它们的源代码。
    • 防止不测的全局变量。如不雅没有严格模式,将值分派给一个未声明的变量会主动创建该名称的全局变量。这是JavaScript中最常见的缺点之一。在严格模式下,如许做的话会抛掉足误。
    • 清除 this 强迫。如不雅没有严格模式,引用null或不决义的值到 this 值会主动强迫到全局变量。这可能会导致很多令人头痛的问题和让人恨不得拔本身头发的bug。在严格模式下,引用 null或不决义的 this 值会抛掉足误。
    • 不许可反复的属性名称或参数值。当检测到对象(例如,var object = {foo: "bar", foo: "baz"};)中反复定名的属性,或检测到函数中(例如,function foo(val1, val2, val1){})反复定名的参数时,严格模式会抛掉足误,是以捕获几乎可以肯定是代码中的bug可以避免浪费大年夜量的跟踪时光。
    • 使eval() 更安然。在严格模式和非严格模式下,eval() 的行动方法有所不合。最显而易见的是,在严格模式下,变量和声明在 eval() 语句内部的函数不会在包含范围内创建(它们会在非严格模式下的包含范围中被创建,这也是一个常见的问题源)。
    • 在 delete应用无效时抛掉足误。delete操作符(用于大年夜对象中删除属性)不克不及用在对象弗成设备的属性上。当试图删除一个弗成设备的属性时,非严格代码将默默地掉败,而严格模式将在如许的情况下抛出异常。

    6.推敲以下两个函数。它们会返回雷同的器械吗? 为什么雷同或为什么不雷同?


      推荐阅读

      AI、大数据、云计算:重塑金融产业的锋芒利刃

    51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦! 智能科技的出现、大年夜数据风口的到来、生物辨认技巧的广泛应用都在开端影响我们的生活,并开启了一个&>>>详细阅读


    本文标题:25个最基本的JavaScript面试问题及答案

    地址:http://www.17bianji.com/lsqh/37446.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)