JavaScript

雇佣 排名前3% of 自由JavaScript开发人员

PT视讯是顶级JavaScript开发者和程序员的市场. 首席执行官们, 技术主管, 顶级公司和初创公司的管理层与PT视讯的JavaScript自由职业者合作,以扩充他们的JavaScript开发团队, 应用程序开发, web开发, 以及其他软件开发项目,以实现自己的业务需求.

无风险试验,满意才付款.

客户的速度 PT视讯 JavaScript开发人员4.4 / 5.0截至2022年1月1日,平均有4696次审查

被领先品牌和初创公司所信赖

雇佣自由JavaScript开发人员和工程师

杰伊·约翰斯顿

自由JavaScript开发人员

美国2013年11月6日起成为PT视讯会员

编码的HTML, CSS, 和JS在1997年的武装部队时期, Jay在调整网络技术以满足客户需求方面有着丰富的经验. 他喜欢通过电子商务解决方案为客户带来价值, 遗留集成, 并优化了PHP和javascript驱动的应用程序.

显示更多

泰勒史坦利

自由JavaScript开发人员

美国2018年6月25日起成为PT视讯会员

以及良好的沟通技巧和良好的职业道德, Tyler带来了他的实践经验与广泛的编程语言. 但最近,他的重点转向了JavaScript库. 在他的整个职业生涯, 他曾作为核心开发者在多个敏捷团队中工作过,现在他对任何与javascript相关的工作都感兴趣.

显示更多

贾斯汀Michela

自由JavaScript开发人员

美国2018年3月28日起成为PT视讯会员

Justin是一位对学习充满热情的专业技术人员,他拥有15年以上的领导团队构建企业级分布式应用程序的经验,这些应用程序可以解决现实世界中的问题. 他坚信企业的各个方面都应该进行合作, 从开发到营销再到销售, 这一努力需要成功吗.

显示更多

大卫Mihal

自由JavaScript开发人员

美国2016年4月16日起成为PT视讯会员

大卫成年后一直在开发网站和网络应用程序. 作为一个软件工程师, 他曾为许多不同的软件公司工作,从早期的初创公司到谷歌. David对许多web框架和环境都很有经验, 但他特别喜欢与《PT视讯官网》合作.js. 他理解质量代码的重要性以及满足调度需求的需要.

显示更多

詹姆斯Koshigoe

自由JavaScript开发人员

美国2014年2月27日起成为PT视讯会员

James是一名软件工程师和网络开发顾问. 他拥有超过10年的创业和企业商业环境构建解决方案的经验,其中全堆栈技能, 创造性思维, 高度关注细节是关键, 而快速转型的是派拉蒙.

显示更多

艾哈迈德·苏莱曼

自由JavaScript开发人员

埃及2019年9月11日起成为PT视讯会员

从谷歌的实习生做起, 艾哈迈德自2015年以来一直领导B2B服务和管理应用的开发. 项目, 他通常负责关于状态管理的架构决策, 套件选择, 测试策略, 文件结构和代码分解, 团队负荷和任务分配. Ahmad还构建了共享组件框架, 可重复使用的CSS代码, 以及可以处理项目不同特性的抽象代码.

显示更多

里卡多Basto

自由JavaScript开发人员

德国2019年3月18日起成为PT视讯会员

Ricardo从事编程已经超过20年了, 从事过十多种编程语言的项目. 他最近的工作范围从数据科学和机器学习到高性能的网络和移动应用.

显示更多

Eugeniu比例分摊

自由JavaScript开发人员

美国2012年9月29日起成为PT视讯会员

Eugeniu是一位全面的全栈软件工程师,在C/ c++等多种技术方面拥有近20年的经验, C#/.网络节点.js、反应、角、Electron等等. 他可以建立和发展新的概念,加入或领导团队,并在混乱中带来秩序. Eugeniu喜欢创新和交付令人难以置信的产品,并成为优秀团队的一部分.

显示更多

斯捷潘Anokhin

自由JavaScript开发人员

俄罗斯2018年4月30日起成为PT视讯会员

具有扎实的数学知识基础和专业的软件开发背景, Stepan拥有完成大多数软件工程角色的经验和技能. 在他的职业生涯中, 他参与过各种项目,包括大型企业系统, web开发, 和云计算. Stepan总是渴望探索计算机科学的新领域,应用前沿技术.

显示更多

安东Razmakhnin

自由JavaScript开发人员

俄罗斯2019年4月30日起成为PT视讯会员

Anton是一名资深的c#开发人员,有超过十年的开发本地(WinForms)的经验, 和web (ASP . WPF).净)申请 .网和 .网络核心平台. 他擅长领导团队, 指导开发人员, 自动化过程, 以及开发web应用程序的前端. 他编写的代码非常干净,并且坚持测试,确保准确性和稳定性.

显示更多

Eniz Vukovic

自由JavaScript开发人员

波斯尼亚和黑塞哥维那2019年11月4日起成为PT视讯会员

一个自学成才的程序员和企业家, Eniz总是准备好接受挑战,并提供最好的, 是否在Viber维护零停机系统, 公司.或者创建一个被全欧洲成千上万人使用的社交网络. 他喜欢为开源项目贡献和讨论.

显示更多

现在就注册看看更多的资料.

开始招聘

招聘指南

雇佣优秀JavaScript开发人员指南

与任何技术一样,我们需要了解JavaScript,并且真正了解JavaScript. 这里有一些经过验证的、有效的技巧和问题,可以帮助你找到真正的语言大师.

阅读招聘指南

JavaScript招聘资源

Trustpilot
媒体报道

... 允许公司快速组建具有特定项目所需技能的团队.

尽管对编码员的需求不断增长,PT视讯却以其几乎达到常春藤盟校(Ivy league)水平的审核而自豪.

我们的客户
创建一个跨平台应用,供全世界使用
蒂埃里Jakicevic
创建一个跨平台应用,供全世界使用
奖状

如果没有PT视讯, Tripcents就不会存在. PT视讯 Projects让我们的基金会在产品经理的帮助下快速发展, 带领开发人员, 和高级设计师. 在60多天的时间里,我们从概念到Alpha. 它的速度、知识、专业技能和灵活性是首屈一指的. PT视讯团队和其他内部团队成员一样,都是tripcents的一部分. 他们和其他人一样为开发做出了贡献并获得了所有权. 我们将继续使用PT视讯. 作为一个创业公司,它们是我们的秘密武器.

首席执行官Brantley步伐 & 联合创始人

Tripcents

我对PT视讯的经验非常满意. 和我一起工作的专业人士在几个小时内就和我通了电话. 在和他讨论了我的项目后,我知道他是我想要的候选人. 我立刻雇佣了他,他也立刻参与了我的项目, 甚至通过添加一些很棒的设计元素来增强我们的整体外观.

导演保罗•Fenley

K邓恩 & 的同事

与我搭档的开发人员都非常出色——聪明、有动力、反应灵敏. 过去很难找到高质量的工程师和顾问. 现在不是.

瑞安·洛克菲勒,首席执行官

Radeeus

PT视讯立即理解了我们的项目需要. 我们请来了一位来自阿根廷的优秀自由职业者, 从第一天起, 投身于我们的行业, 与我们的团队完美融合, 理解我们的愿景, 并产生了一流的结果. PT视讯使得与高级开发人员和程序员的联系非常容易.

Jason Kulik创始人之一

ProHatch

作为一家资源有限的小公司,我们不能犯代价高昂的错误. PT视讯为我们提供了一个经验丰富的程序员,他能够立即投入工作并开始贡献. 这是一个伟大的经历,我们会在心跳中再次重复.

斯图尔特·柏克尼校长

站点专用软件解决方案

我们通过PT视讯聘请了一位拥有丰富亚马逊网络服务经验的开发人员. 我们面试了四位候选人,其中一位非常符合我们的要求. 这一过程迅速而有效.

Abner Guzmán Rivera,首席技术官和首席科学家

照片Kharma

Sergio是一个非常棒的开发者. 一流,反应灵敏,工作效率高.

Dennis Baldwin,首席技术专家和联合创始人

PriceBlink

和Marcin一起工作是一种乐趣. 他是主管, 专业, 灵活的, 并且非常快地理解需要什么以及如何实现它.

Andre Fischer首席技术官

POSTIFY

我们需要一位专业的工程师,他能立即开始我们的项目. Simanas的工作超出了我们的预期. 不需要面试和寻找专业的开发人员是一个非常好的时间节省,并使每个人对我们选择转换平台以使用更健壮的语言感到更舒服. PT视讯让这个过程变得简单和方便. PT视讯现在是我们寻求专家水平帮助的第一个地方.

Derek Mi也不,网络开发高级副总裁

Networld传媒集团

PT视讯的开发人员和架构师都非常专业,也很容易共事. 他们所提供的解决方案价格合理且质量上乘,从而缩短了我们的发行时间. 再次感谢,PT视讯.

首席执行官杰里米鞋号

Kognosi

PT视讯给我们带来了很棒的体验. 他们为我们的应用程序匹配了完美的开发人员,使这个过程非常容易. 它也很容易超出最初的时间框架, 我们能够在整个项目中保持同一个承包商. 我们强烈推荐PT视讯快速无缝地寻找高质量人才.

瑞安莫首席技术官

应用商业技术有限公司

PT视讯给我留下了深刻印象. 我们的开发人员每天都和我交流,他是一个非常强大的程序员. 他是一个真正的专业人士,他的作品非常出色. PT视讯 5星.

首席执行官皮特Casoar

Ronin Play Pty Ltd

与PT视讯合作是一次很棒的经历. 使用它们之前, 我花了很长时间采访其他的自由职业者,却没有找到我需要的. 在与PT视讯接触后,他们在几天内就为我找到了一个完美的开发者. 与我一起工作的开发人员不仅交付高质量的代码, 但他也会对一些我没有想到的事情提出建议. 我很清楚阿莫里知道他在做什么. 强烈推荐!

首席执行官乔治•程

Bulavard公司.

作为一名合格的PT视讯前端开发人员,我还经营着自己的咨询业务. 当客户来找我帮忙填补他们团队中的关键角色时, PT视讯是我唯一放心推荐的地方. 托普塔尔的所有候选人都是精英中的精英. PT视讯是我在近五年的专业在线工作中发现的最物有所值的.

伊桑•布鲁克斯首席技术官

Langlotz专利 & 商标工作的公司.

在讨价还价早期, 我们需要一流的开发人员, 以可承受的利率, 及时地. PT视讯交付!

首席执行官劳拉Aldag

讨价还价

PT视讯让你非常容易找到一个候选人,并让你放心,他们有能力提供. 我肯定会向任何寻找高技能开发人员的人推荐他们的服务.

Michael Gluckman,数据经理

Mxit公司——

PT视讯能够迅速将我们的项目与最优秀的开发人员匹配起来. 开发人员已经成为我们团队的一部分, 我对他们每个人所表现出的敬业程度感到惊讶. 对于那些希望与最好的工程师远程工作的人来说,PT视讯是最好的选择.

创始人Laurent爱丽丝

Livepress

PT视讯让找到合格的工程师变得轻而易举. 我们需要一个有经验的ASP.净 MVC架构师来指导我们的初创应用程序的开发, PT视讯在不到一周的时间里就有了三个很好的候选人. 在我们做出选择后,工程师立即上线并开始工作. 这比我们自己发现和审查候选人要快得多,也容易得多.

联合创始人杰夫•凯利

协同解决方案

我们需要一些短期的Scala开发工作,PT视讯在24小时内就为我们找到了一个优秀的开发人员. 这是任何其他平台都不可能实现的.

弗兰科斯巴达,创始人之一

WhatAdsWork.com

PT视讯为快速发展和规模化的企业提供了不妥协的解决方案. 我们通过PT视讯聘请的每一位工程师都迅速融入了我们的团队,在保持卓越开发速度的同时,他们的工作达到了最高的质量标准.

联合创始人格雷格•金博

nifti.com

如何通过PT视讯招聘JavaScript开发人员

1

与我们的行业专家之一谈谈

PT视讯的工程总监将与您一起工作,以了解您的目标, 技术需求, 和团队动力.
2

与精心挑选的人才一起工作

几天之内,我们将为您的项目介绍合适的JavaScript开发人员. 平均匹配时间在24小时以下.
3

合身,保证

与新的JavaScript开发人员合作试用一段时间(如果满意就付费), 在订婚前确保他们是合适的人选.

常见问题

  • PT视讯的JavaScript开发者有何不同?

    在PT视讯, 我们彻底筛选我们的JavaScript开发人员,以确保我们只匹配您的人才的最高水平. 超过100个,每年有1万多人申请加入PT视讯网络, 只有不到3%的人能成功. 你将与工程专家(而不是一般化的招聘人员或人力资源代表)一起工作来理解你的目标, 技术需求, 和团队动力. 最终的结果是:专家从我们的网络中审查人才,定制匹配,以满足您的业务需求. 现在就开始.

  • 我可以通过PT视讯在48小时内雇佣JavaScript开发人员吗?

    这取决于可用性和进度的快慢, 你可以在注册48小时内开始与JavaScript开发人员合作. 现在就开始.

  • PT视讯 JavaScript开发者的无风险试用期是什么?

    我们确保您和您的JavaScript开发人员之间的每一次接触都始于长达两周的试用期. 这意味着您有时间确认订婚是否成功. 如果你对结果完全满意的话, 我们将按时间向你收费,你们的婚约想继续多久就继续多久. 如果你不完全满意,你不会被收费. 从那里, 我们有两种选择, 或者我们可以为您提供另一位可能更适合的专家,我们将与他开始第二个, 无风险试用. 现在就开始.

  • PT视讯有什么样的才能?

    我们的平台拥有各种各样的技能、经验和背景. 我们的自由职业者包括软件工程师, 用户体验设计师, 项目管理专家, 从产品经理到曾在谷歌等领先企业工作过的金融专家, 微软, 亚马逊, 和许多更多.

  • PT视讯还提供哪些其他服务?

    除了我们的人才匹配服务, 我们也像开发公司一样提供网络和应用程序开发服务. 通过我们的PT视讯项目团队, 我们组建了由高级项目经理组成的跨职能团队, web开发人员, 应用程序开发者, 用户界面设计师, 和其他技术技能. 我们的团队成员遵循定义良好的开发过程来构建一个功能完整的解决方案.

分享
JavaScript

如何雇佣优秀的JavaScript开发人员

所面临的挑战

在今天的技术领域, JavaScript现在基本上已经成为客户端web开发的同义词, 随着技术和像节点这样的JavaScript框架的出现.js, Vue.js和反应.js, JavaScript也正在成为主导的服务器端技术.

相应的, 全栈开发人员认为,至少有一定程度的JavaScript经验在软件开发社区中已经成为普遍现象. 这使得定位JavaScript web开发人员相当容易, 但这也使得从它们中筛选出“少数精英”变得更加困难. 找到他们需要一个高效的招聘过程,正如我们在文章中描述的那样 在寻找精英少数-发现和雇用最好的开发人员在行业. 然后,可以用问题(如本文中提出的问题)来扩充这个过程,以确定那些分布在全球各地的真正的JavaScript专家.

是的,我知道JavaScript…

与任何技术一样,我们需要了解JavaScript开发,然后 真的 知道JavaScript. 在我们寻找语言大师的过程中, 我们需要一个面试过程,能够准确量化候选人的职位,沿着JavaScript专业水平的连续统一体.

朝着这个目标, 这篇文章提供了一些问题样本,这些问题是评估应聘者掌握JavaScript的广度和深度的关键. 不过,重要的是要记住,这些示例问题只是作为一个指导. 并不是每一位值得雇佣的“A”候选人都能正确回答所有问题, 也不能保证回答所有这些问题就能得到一个“A”候选人. 说到底,招聘既是一门科学,也是一门艺术.

评估的基础

遇到“有经验的”JavaScript程序员,他们对语言基础的掌握要么很弱,要么很混乱,这种情况太常见了.

JavaScript是一种基于原型的脚本语言,具有动态类型. JavaScript可以, 起初, 对于熟悉基于类的语言(如Java或c++)的开发人员来说,可能会有点困惑, 因为它是动态的,不提供传统的类实现. 因此,遇到“有经验的”JS开发人员,他们对语言基础的掌握要么很弱,要么很困惑,这太常见了.

有助于评估开发人员对JavaScript基础知识掌握程度的问题, 包括一些更微妙的细微差别, 因此这是面试过程中的一个重要组成部分吗. 下面是一些例子……

Q:用JavaScript描述继承和原型链. 举个例子.

尽管JavaScript是一种面向对象的语言, 它是基于原型的,没有实现传统的基于类的继承系统.

在JavaScript中,每个对象在内部引用另一个被称为its的对象 原型. 这个原型对象依次具有对其原型对象的引用,以此类推. 在这个原型链的末端是一个以null作为原型的对象. 原型链是实现继承的机制 原型继承 准确地说,是用JavaScript实现的. 特别是, 当引用对象本身不包含的属性时, 遍历原型链,直到找到被引用的属性(或者直到到达链的末端), 在这种情况下属性是未定义的).

下面是一个简单的例子:

function Animal() {this.eatsVeggies = true; this.eatsMeat = false; }

函数食草动物(){}
食草动物.原型 = new Animal();

function食肉动物(){这个.eatsMeat = true; }
食肉动物.原型 = new Animal();

var rabbit = new 食草动物();
var bear = new食肉动物();

控制台.日志(兔子.eatsMeat);   // logs "false"
控制台.日志(熊.eatsMeat);     // logs "true"

Q:比较和对比JavaScript中的对象和哈希表.

This is somewhat of a trick question since, in JavaScript, objects essentially are hashtables; i.e.,名称-值对的集合. 在这些名称-值对中,需要注意的关键一点是名称(a.k.a.(例如,键)总是字符串. 这就引出了我们的下一个问题…

问:考虑下面的代码片段(source). 警报将显示什么? 解释你的答案.

var 喷火 = new Object();
var 酒吧 = new Object();
var map = new Object();

地图(喷火) =“喷火”;
地图(酒吧)=“酒吧”;

alert(map[喷火]);  // what will this display??

很少有候选人会正确回答这个问题,因为它会提醒字符串“酒吧”。. 大多数人会错误地回答它提醒了字符串“喷火”. 所以,让我们来理解为什么“酒吧”确实是正确的,尽管令人惊讶……

如前一个问题的答案所述, JavaScript对象本质上是一个名称-值对的哈希表,其中名称(i.e.例如,键)是字符串. 他们是 总是 字符串. 事实上, 在JavaScript中,当一个对象而不是一个字符串被用作键时, no error occurs; rather, JavaScript 默默地 将其转换为字符串并使用该值作为键. 这可能会产生令人惊讶的结果,如上面的代码所示.

要理解上述代码片段,必须首先认识到 map 对象并显示 映射对象 喷火 到字符串“喷火”,它也不映射对象 酒吧 到字符串“酒吧”. 由于对象 喷火酒吧 不是字符串,当他们被用作键 map, JavaScript使用每个对象的键值自动转换为字符串 toString () 方法. 因为既不 喷火 也不 酒吧 定义自己的自定义 toString () 方法,它们都使用相同的默认实现. 该实现仅在调用时生成字面字符串“[object object]”. 记住这个解释, 让我们重新检查一下上面的代码片段, 但这一次有了解释性的评论:

var 喷火 = new Object();
var 酒吧 = new Object();
var map = new Object();

地图(喷火) =“喷火”;    // --> map["[object Object]"] = "喷火";
地图(酒吧)=“酒吧”;    // --> map["[object Object]"] = "酒吧";
                     //第二个映射替换第一个映射!

alert(map[喷火]);     // --> alert(map["[object Object]"]);
                     //自映射["[object object]"] = "酒吧",
                     //这将警告"酒吧",而不是"喷火"!!
                     / /惊讶! ;-)

Q:用JavaScript解释闭包. 它们是什么? 它们有哪些独特的特点? 如何以及为什么要使用它们? 提供一个例子.

闭包是一个函数, 以及创建闭包时范围内的所有变量或函数. In JavaScript, a closure is implemented as an “inner function”; i.e.,在另一个函数体中定义的函数. 下面是一个简单的例子:

(函数outerFunc (outerArg) {
  var outerVar = 3;

  (函数middleFunc (middleArg) {
    var middle levar = 4;

    (函数innerFunc (innerArg) {
      var innerVar = 5;
      //闭包的作用域示例:
      //变量innerFunc, middleFunc,和outerFunc,
      //以及全局命名空间都在这里.
      控制台.日志(" outerArg = " + outerArg +
                  “middleArg = " + middleArg +
                  “innerArg = " + innerArg + +“\ n”
                  “outerVar = " + outerVar +
                  “middleVar = " + middleVar +
                  “innerVar = " + innerVar);
      // ---------------这将记录:---------------
      // outerArg=123 middleArg=456 innerArg=789
      // outerVar=3 middle levar =4 innerVar=5
    })(789);
  })(456);
})(123);

闭包的一个重要特性是内部函数仍然可以访问外部函数的变量 外部函数已经返回. 这是因为,当JavaScript中的函数执行时,它们使用的是有效的作用域 当他们被创造出来的时候.

这导致了一个常见的混淆点, 虽然, 是基于内部函数访问外部函数的变量值的事实吗 调用 (而不是在当时 创建). 测试候选人对这种细微差别的理解, 展示以下代码片段,动态创建五个按钮,并询问当用户点击第三个按钮时将显示什么:

函数addButtons(按钮){
  for (var i = 0; i < numButtons; i++) {
    Var按钮=文档.createElement(“输入”);
    button.类型=“按钮”;
    button.value = 'Button ' + (i + 1);
    button.Onclick = function() {
      alert('Button ' + (i + 1) + ' clicked');
    };
    文档.body.列表末尾(按钮);
    文档.body.列表末尾(文档.createElement (br));
  }
}

窗口.onload = function() { addButtons(5); };

许多人会错误地回答,当用户点击第三个按钮时,会显示“点击按钮3”. 事实上, 上面的代码包含一个错误(基于对闭包工作方式的误解),当用户点击按钮6时,将显示“按钮6点击” 任何 五个按钮中的一个. 这是因为,onclick方法是 调用 ( 任何 的按钮),for循环已经完成和变量 i 已经有一个值为5.

一个重要的后续问题是询问候选人如何修复上面代码中的错误, 为了产生预期的行为(i.e.,这样点击按钮n将显示“按钮n点击”)。. 下面是正确的答案,它演示了闭包的正确使用:

函数addButtons(按钮){
  for (var i = 0; i < numButtons; i++) {
    Var按钮=文档.createElement(“输入”);
    button.类型=“按钮”;
    button.value = 'Button ' + (i + 1);
    //这里是解决方案:
    //使用即时调用函数表达式(IIFE)
    //模式,以达到预期的行为:
    button.onclick = function(buttonIndex) {
      返回函数(){
        alert('Button ' + (buttonIndex + 1) + ' clicked');
      };
    }(i);
    文档.body.列表末尾(按钮);
    文档.body.列表末尾(文档.createElement (br));
  }
}

窗口.onload = function() { addButtons(5); };

尽管这绝不是JavaScript独有的, 闭包对于许多现代JavaScript编程范例来说是一个特别有用的构造. 它们被一些最流行的JavaScript库广泛使用,比如jQuery和节点.js.

拥抱多样性

JavaScript容纳了异常广泛的编程技术和设计模式. 一个JavaScript大师将很好地意识到选择一种方法和结果的重要性和后果. 另一个.

一、多范型的语言, JavaScript支持面向对象, 必要的, 函数式编程风格. 像这样, JavaScript容纳了异常广泛的编程技术和设计模式. JavaScript高手应该很清楚这些替代品的存在, 更重要的是, 选择一种方法而不是另一种方法的意义和后果. 以下是几个问题示例,可以帮助评估应聘者在这方面的专业技能:

问:描述制作物品的不同方式以及每一种方式的后果. 提供的例子.

下图对比了JavaScript中创建对象的各种方法,以及每种方法产生的原型链的差异.

Q:将函数定义为函数表达式(例如函数表达式)有什么实际的区别吗.g., Var 喷火 = function(){})或作为函数语句(e.g., 函数喷火 () {})? 解释你的答案.

是的,这是有区别的,这取决于函数值的赋值方式和时间.

当一个函数语句(e.g., 函数喷火 () {})被使用,函数 喷火 可以在定义之前通过一种叫做“提升”的技术来引用. 提升的一个分支是,函数的最后一个定义将被使用, 不管它是什么时候被引用的(如果不清楚, 下面的示例代码应该有助于澄清问题).

相反,当一个函数表达式(e.g., Var 喷火 = function(){})被使用,函数 喷火 在定义之前不能被引用,就像任何其他赋值语句一样. 因为这个, 函数的最新定义是将要使用的(与此相对应), 定义必须在引用之前, 或者函数是未定义的).

这里有一个简单的例子,说明了两者之间的实际区别. 考虑以下代码片段:

function 喷火() { return 1; }

alert(喷火());   // what will this alert?

function 喷火() { return 2; }

许多JavaScript开发人员会错误地回答,上面的警告将显示“1”,并会惊讶地发现它实际上显示的是“2”. 如上所述,这是由于吊装. 因为函数语句是用来定义函数的, 函数的最后一个定义是在它被调用时被提升的那个(即使在代码中它是随后被调用的)!).

现在考虑下面的代码片段:

var 喷火 = function() { return 1; }

alert(喷火());   // what will this alert?

喷火 = function() { return 2; }

在本例中,答案更直观,警报将显示“1”. 因为使用了函数表达式来定义函数, 函数的最新定义是在调用它时所使用的定义.

细节决定成败

除了到目前为止讨论的高级JavaScript概念之外, JavaScript语言中有许多底层的语法细节是真正的JavaScript专家应该非常熟悉的. 这里有一些例子…

问:……的意义是什么, 和原因, 将JavaScript源文件的全部内容包装在一个函数块中?

这是一种越来越普遍的做法,被许多流行的JavaScript库(jQuery、节点 . js)所采用.js等.). 该技术创建了一个围绕文件的全部内容的闭包, 或许最重要的是, 创建一个私有命名空间,从而有助于避免不同JavaScript模块和库之间潜在的名称冲突.

该技术的另一个特性是允许为全局变量提供一个易于引用(可能较短)的别名. 这是经常使用的,例如,在jQuery插件中. jQuery允许您禁用 $ 引用jQuery名称空间,使用 jQuery.noConflict (). 如果已经这样做了,你的代码仍然可以使用这个闭包技术$,如下所示:

{/* jQuery插件代码引用$ */})(jQuery);

问:两者的区别是什么 =====? 之间的 !=!==? 举个例子.

" triple "比较运算符之间的区别(===, !==)和双比较运算符(==, !=),在JavaScript中,双比较运算符在比较操作数之前对操作数执行隐式的类型转换, 用三元比较运算符, 不执行类型转换(i.e.,值必须相等且类型必须相同,这样操作数才会被认为相等).

举个简单的例子,表达式 123 == '123' 将会为真,然而 123 === '123' 将求值为假.

问:“包括”的意义是什么 使用严格的 在JavaScript源文件的开头?

虽然关于这个话题还有很多要说的,但简短且最重要的答案是 使用严格的 是一种自愿在运行时对JavaScript代码实施更严格的解析和错误处理的方法吗. 代码错误本来会被忽略,或者会悄无声息地失败,现在会生成错误或抛出异常. 总的来说,这是一个很好的实践.

总结

JavaScript可能是当今存在的最被误解和低估的编程语言之一. 人们越是剥开JavaScript的洋葱皮,就越能意识到什么是可能的. JavaScript是全能的,可以被前端和后端开发人员使用. 相应的, 无论是在美国还是在国外,要找到全职或兼职的语言大师都是一个挑战. 我们希望这篇文章中提出的问题能成为您在寻找最佳JavaScript开发人员中的“少数精英”加入您的开发团队时,“去粗取精”的有用基础.

特色PT视讯 JavaScript出版物

顶级JavaScript开发人员需求量很大.

开始招聘
<喷火ter class="_1cXxqsT8 _13AzE63U">