JavaScript开发人员

雇佣 Top 3% of 自由JavaScript开发人员

PT视讯是一个面向顶级JavaScript开发人员和编码员的市场. CEOs, CTOs, 顶级公司和初创公司的管理层与PT视讯 JavaScript自由职业者合作,以增强他们的JavaScript开发团队, 应用程序开发, web开发, 和其他软件开发项目来实现其业务需求.

无风险试用,满意才付钱.

客户的速度 顶级JavaScript开发者4.3 / 5.0在截至2023年3月13日的6136篇评论中,平均而言

深受领先品牌和创业公司的信赖

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

杰伊·约翰斯顿

自由JavaScript开发人员

美国PT视讯成员 Since 2013年11月26日

编码的HTML, CSS, 1997年他在军队服役时就开始学习JavaScript, Jay喜欢通过电子商务解决方案为客户带来价值, 遗留集成, 优化了PHP和javascript驱动的应用程序. 他偏爱的DevOps环境是AWS, 他擅长(但不限于):关系数据库服务(RDS), Redshift, 发电机DB, 数据迁移服务(DMS), Lambda(无服务器和微服务), Cloudwatch, Cloudtrail, 和事件桥.

显示更多

泰勒史坦利

自由JavaScript开发人员

美国PT视讯成员 Since 2018年8月3日

还有良好的沟通能力和模范的职业道德, Tyler带来了他在各种编程语言方面的实践经验. 不过,最近他的关注点转向了JavaScript库. 在他的职业生涯中, 他曾在多个敏捷团队中担任核心开发人员,现在对任何与javascript相关的工作都感兴趣.

显示更多

贾斯汀Michela

自由JavaScript开发人员

美国PT视讯成员 Since 2018年6月26日

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

显示更多

大卫Mihal

自由JavaScript开发人员

美国PT视讯成员 Since 2016年4月16日

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

显示更多

詹姆斯Koshigoe

自由JavaScript开发人员

美国PT视讯成员 Since 2014年4月2日

James是一名专注于网络开发的软件工程师和顾问. 他在创业公司和企业业务环境中有超过十年的经验,在全栈技能的情况下构建解决方案, 创造性思维, 对细节的高度关注是关键, 快速周转是最重要的.

显示更多

艾哈迈德·苏莱曼

自由JavaScript开发人员

EgyptPT视讯成员 Since 2019年11月6日

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

显示更多

里卡多Basto

自由JavaScript开发人员

GermanyPT视讯成员 Since 2019年5月7日

里卡多已经编码20多年了, 在十多种编程语言的项目中工作过. 他与人共同创立了一些公司, 在几家成功的创业公司担任首席技术官, 管理分散的开发人员和产品设计师团队. 他最近的工作范围从数据科学和机器学习到高性能的网络和移动应用程序, 包括Web3和crypto.

显示更多

斯捷潘Anokhin

自由JavaScript开发人员

RussiaPT视讯成员 Since 2019年3月5日

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

显示更多

安东Razmakhnin

自由JavaScript开发人员

RussiaPT视讯成员 Since 2019年12月19日

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

显示更多

达沃Badrov

自由JavaScript开发人员

CroatiaPT视讯成员 Since 2019年12月12日

Davor是一名全栈工程师,在企业和创业项目上有6年的专业经验. 他对学习充满热情, 扩大他的知识, 构建高质量软件, 和自动化.

显示更多

Abdelhamid Attaby

自由JavaScript开发人员

EgyptPT视讯成员 Since 2019年12月12日

Abdelhamid是前GitHub专业软件工程师,拥有13年以上的经验,计算机科学与工程硕士和博士学位. 他还在不同的中小型创业公司担任过执行和领导职务. Abdelhamid的专长包括JavaScript, 打印稿, Node.js, Python, REST API, GraphQL, Redis, NoSQL, SQL, React, Next.js、微服务、CI/CD、云服务.

显示更多

现在注册查看更多资料.

开始招聘
经常成对出现

获得额外的专业知识

我们的客户经常将这些额外的服务与我们的自由JavaScript开发人员配对.

招聘指南

招聘优秀JavaScript开发人员指南

与任何技术一样,需要了解JavaScript,然后才能真正了解JavaScript. 这里有一些行之有效的技巧和问题,可以帮助你找到真正的语言大师.

阅读招聘指南

JavaScript招聘资源

Trustpilot
媒体上的头条新闻

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

尽管对编码员的需求在加速增长,PT视讯仍以几乎常春藤盟校级别的审查而自豪.

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

没有PT视讯, Tripcents就不会存在. PT视讯项目使我们能够通过产品经理快速发展我们的基金会, 带领开发人员, 高级设计师. 在60多天的时间里,我们从概念开发到Alpha版本. 速度、知识、专业知识和灵活性是首屈一指的. PT视讯团队是tripcents的一部分,就像tripcents的任何内部团队成员一样. 他们做出了贡献,并像其他人一样拥有了开发的所有权. 我们将继续使用PT视讯. 作为一家创业公司,他们是我们的秘密武器.

Brantley Pace,首席执行官 & 联合创始人

Tripcents

我对我们与PT视讯的合作非常满意. 和我一起工作的专业人士在几个小时内就和我通了电话. 在和他讨论了我的项目后,我知道他就是我想要的候选人. 我立即雇用了他,他没有浪费时间来完成我的项目, 甚至通过添加一些伟大的设计元素来增强我们的整体外观.

保罗·芬利,局长

K Dunn & 的同事

与我合作的开发人员非常出色——他们聪明、有动力、反应迅速. 过去很难找到高质量的工程师和顾问. 现在不是了.

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

Radeeus

PT视讯立即理解了我们的项目需求. 我们的搭档是一位来自阿根廷的优秀自由职业者, 从第一天开始, 让自己沉浸在我们的行业中, 与我们的团队无缝融合, 了解我们的愿景, 并取得了一流的成绩. PT视讯使与高级开发人员和程序员的联系变得非常容易.

联合创始人Jason Kulik

ProHatch

作为一家资源有限的小公司,我们承担不起代价高昂的错误. PT视讯为我们提供了一个经验丰富的程序员,他能够立即开始投入工作. 这是一次很棒的经历,我们会毫不犹豫地再重复一次.

Stuart Pocknee,校长

网站专用软件解决方案

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

Abner Guzmán里维拉,首席技术官和首席科学家

照片Kharma

Sergio是一个非常棒的开发人员. 一流的,反应灵敏,高效地完成了工作.

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

PriceBlink

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

André费舍尔,CTO

POSTIFY

我们需要一位专家工程师,他能立即开始我们的工程. 西马纳斯的工作超出了我们的预期. 不需要面试和寻找专家开发人员,这大大节省了时间,也让每个人都对我们选择切换平台以使用更健壮的语言感到更舒服. PT视讯使这个过程简单方便. PT视讯现在是我们寻求专家级帮助的第一个地方.

Derek Minor,网站开发的高级副总裁

网世界传媒集团

PT视讯的开发人员和架构师都非常专业,易于合作. 他们的解决方案价格合理,质量上乘,缩短了我们的发布时间. 再次感谢PT视讯.

杰里米·韦塞尔斯,首席执行官

Kognosi

我们对PT视讯有很好的体验. 他们为我们的应用程序找到了完美的开发人员,使整个过程变得非常简单. 它也很容易超出最初的时间框架, 我们可以在整个项目中使用同一个承包商. 我们强烈推荐PT视讯,因为它能快速、无缝地发现高素质人才.

瑞安·莫里西,首席技术官

应用商业技术有限责任公司

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

Pietro Casoar,首席执行官

浪人游戏有限公司

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

George Cheng,首席执行官

Bulavard公司.

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

伊森·布鲁克斯,技术总监

Langlotz专利 & 商标作品有限公司.

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

Lara Aldag,首席执行官

Higgle

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

Michael Gluckman,数据经理

Mxit

PT视讯将我们的项目与最优秀的开发人员快速匹配的能力非常出色. 开发人员已经成为我们团队的一部分, 我对他们每个人所表现出的敬业精神感到惊讶. 对于那些希望与最好的工程师远程工作的人来说,没有比PT视讯更好的选择了.

Laurent Alis,创始人

Livepress

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

联合创始人杰夫·凯利

协同解决方案

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

联合创始人Franco Arda

WhatAdsWork.com

PT视讯为快速发展和规模化的企业提供不妥协的解决方案. 我们通过PT视讯签约的每一位工程师都迅速融入了我们的团队,并在保持惊人的开发速度的同时,以最高的质量标准进行工作.

Greg Kimball,联合创始人

nifti.com

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

1

请与我们的行业专家交谈

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

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

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

绝对合适

与你的新JavaScript开发人员一起试用一段时间(满意才付钱), 在订婚前确保他们是合适的.

FAQs

  • PT视讯 JavaScript开发者有什么不同?

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

  • 我能在48小时内通过PT视讯招聘到JavaScript开发人员吗?

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

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

    我们确保您和JavaScript开发人员之间的每一次接触都以长达两周的试用期开始. 这意味着你有时间来确认约会是否成功. 如果你对结果完全满意的话, 我们会为您收费的,只要您愿意,我们会继续约会. 如果你不完全满意,你就不会被收费. 从那里, 我们要么分道扬镳, 或者我们可以为您提供另一位更合适的专家,我们将与他开始第二次合作, 无风险试用. 现在就开始.

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

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

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

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

Share
JavaScript开发人员

如何聘请优秀的JavaScript开发人员

所面临的挑战

在今天的科技领域, JavaScript已经成为客户端web开发的同义词, 随着像Node这样的技术和JavaScript框架的出现.js, Vue.js和React.js, JavaScript也正在成为一个占主导地位的服务器端技术.

相应的, 在软件开发社区中,引用至少某种程度的JavaScript经验的全栈开发人员简历基本上已经成为普遍现象. 这使得定位JavaScript web开发人员相当容易, 但这也让筛选他们以找到“少数精英”更具挑战性. 找到他们需要一个高效的招聘过程,正如我们在帖子中描述的那样 在寻找精英少数-寻找和雇用最好的开发人员在行业. 这样的过程可以通过问题(比如本文中提出的问题)进行扩充,以确定那些分散在全球各地的候选人,谁是真正的JavaScript专家.

是的,我懂JavaScript…

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

为了这个目标, 这篇文章提供了一些问题样本,这些问题是评估应聘者对JavaScript掌握程度的广度和深度的关键. 但是,重要的是要记住,这些示例问题仅仅是作为一个指南. 不是每个值得雇佣的“A”级求职者都能正确地回答所有问题, 也不能保证全部回答都能得“A”. 说到底,招聘既是一门科学,也是一门艺术.

评估基金会

我们很容易遇到“有经验的”JavaScript程序员,他们对语言基础的掌握不是很薄弱就是很混乱.

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

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

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

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

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

这里有一个简单的例子:

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

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

function食肉动物(){this.eatsMeat = true; }
食肉动物.原型 =新动物();

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

console.日志(兔子.eatsMeat);   // logs "false"
console.log(bear.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 foo = new Object();
var bar = new Object();
var map = new Object();

Map [foo] = "foo";
Map [bar] = "bar";

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

很少有人能正确回答这是在提醒字符串" bar ". 大多数人会错误地回答它会提醒字符串" foo ". 那么,让我们来理解为什么“酒吧”确实是正确的答案,尽管令人惊讶……

正如在前一个问题的答案中所提到的, JavaScript对象本质上是一个名称-值对哈希表,其中名称(i.e.,键)是字符串. 确实是这样 always strings. In fact, 当JavaScript中使用字符串以外的对象作为键时, no error occurs; rather, JavaScript silently 将其转换为字符串并使用该值作为键. 这可能会产生令人惊讶的结果,如上面的代码所示.

要理解上面的代码片段,首先必须认识到 map 所显示的对象 not 映射对象 foo 到字符串“foo”,也不映射对象 bar 到字符串bar. 因为对象 foo and bar 当它们被用作键时,不是字符串吗 map, JavaScript使用每个对象的键值自动将键值转换为字符串 toString () method. 既然都不是 foo nor bar 定义自己的自定义 toString () 方法,它们都使用相同的默认实现. 该实现在调用时只生成字面字符串“[object object]”. 记住这个解释, 让我们重新检查上面的代码片段, 但这一次附带了解释性的评论:

var foo = new Object();
var bar = new Object();
var map = new Object();

Map [foo] = "foo";    // --> map["[object Object]"] = "foo";
Map [bar] = "bar";    // --> map["[object Object]"] = "bar";
                     //替换第一个映射!

alert(map[foo]);     // --> alert(map["[object Object]"]);
                     // and since map["[object object]"] = "bar",
                     //这将提示"bar"而不是"foo"!!
                     / /惊讶! ;-)

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

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

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

  (函数middleFunc(middlelearg) {
    var middlelevar = 4;

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

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

这导致了一个常见的困惑点, though, 是基于这样一个事实,内部函数访问的值,外部函数的变量的时间 invoked (而不是当时的情况 created). 测试应聘者对这种细微差别的理解, 演示以下代码片段,动态创建5个按钮,并询问当用户单击第三个按钮时将显示什么:

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

window.onload = function() { addButtons(5); };

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

一个重要的后续问题是询问应聘者如何修复上面代码中的错误, 从而产生预期的行为(i.e.,因此,点击按钮n将显示“按钮n已点击”). 正确的答案,演示了闭包的正确使用,如下所示:

函数addButtons(numButtons) {
  for (var i = 0; i < numButtons; i++) {
    Var按钮=文档.createElement(“输入”);
    button.Type = 'button';
    button.value = '按钮' + (i + 1);
    //这里是修复:
    //使用立即调用函数表达式
    //模式来实现所需的行为:
    button.onclick = function(buttonIndex) {
      返回函数(){
        alert('Button ' + (buttonIndex + 1) + ' clicked');
      };
    }(i);
    document.body.列表末尾(按钮);
    document.body.列表末尾(文档.createElement (br));
  }
}

window.onload = function() { addButtons(5); };

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

拥抱多样性

JavaScript容纳了大量不同寻常的编程技术和设计模式. JavaScript高手会很清楚选择一种方法和选择另一种方法的意义和后果. another.

多范式语言, JavaScript支持面向对象, 必要的, 函数式编程风格. As such, JavaScript容纳了大量不同寻常的编程技术和设计模式. JavaScript高手会很清楚这些替代方案的存在, 更重要的是, 选择一种方法而不是另一种方法的意义和后果. 下面是几个示例问题,可以帮助评估应聘者在这方面的专业知识:

问:请描述一下创建对象的不同方法以及每种方法的分支. 提供的例子.

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

问:将函数定义为函数表达式(e.g., Var foo = function(){})或作为函数语句(e.g., 函数foo () {})? 解释你的答案.

是的,根据函数值的赋值方式和赋值时间的不同,会有区别.

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

相反,当函数表达式(e.g., Var foo = function(){})被使用,函数 foo 在定义之前不能被引用,就像任何其他赋值语句一样. 正因为如此, 函数的最新定义是将要使用的定义, 定义必须在引用之前, 否则函数将是未定义的).

下面是一个简单的示例,演示了两者之间的实际差异. 考虑下面的代码片段:

function foo() { return 1; }

alert(foo());   // what will this alert?

function foo() { return 2; }

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

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

var foo = function() { return 1; }

alert(foo());   // what will this alert?

foo = function() { return 2; }

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

细节决定成败

除了到目前为止讨论的高级JavaScript概念, 有许多底层的语法细节是真正的JavaScript大师应该非常熟悉的. 下面是一些例子。

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

这是一种越来越普遍的做法,许多流行的JavaScript库(jQuery, Node.js, etc.). 该技术在文件的全部内容周围创建一个闭包, 也许最重要的是, 创建私有名称空间,从而帮助避免不同JavaScript模块和库之间潜在的名称冲突.

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

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

问:两者有什么区别 == and ===? Between != and !==? 举个例子.

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

作为一个简单的例子,表达式 123 == '123' 求值是否为真,而 123 === '123' 会计算为false.

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

虽然关于这个话题还有很多可说的,但这里最简短和最重要的答案是 使用严格的 是一种在运行时对JavaScript代码强制执行更严格的解析和错误处理的方法吗. 原本会被忽略或默默失败的代码错误现在将生成错误或抛出异常. 总的来说,这是一种很好的做法.

Wrap Up

JavaScript可能是当今存在的最被误解和低估的编程语言之一. 一个人剥JavaScript的洋葱皮剥得越多,就越能意识到什么是可能的. JavaScript足够通用,前端和后端开发人员都可以使用. 相应的, 在美国或国外找到真正精通这门语言的人担任全职或兼职工作是一项挑战. 我们希望您能发现本文中提出的问题是一个有用的基础,在您寻找最好的JavaScript开发人员中“少数精英”加入您的开发团队时,可以“去芜有貉”.

精选PT视讯 JavaScript出版物

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

开始招聘