课程咨询 :186-8884-0703

深圳Web培训 > 达内新闻 > 达内深圳web培训专家总结HR面试最看重的JS技术要点
  • 达内深圳web培训专家总结HR面试最看重的JS技术要点

    发布:深圳Web培训      来源:达内新闻      时间:2016-04-25

  • 对于即将完成学业的深圳达内web培训学员而言,马上就要开始艰辛的面试旅程,面对各路严肃的HR们,深圳达内的学员们有把握成功脱颖而出吗?对于偏重于技术层面的HR来说,深圳达内web培训的小编为大家带来了如何应对HR的JS技术面试要点。

    在web开发工作中,相信你肯定也遇到过各种各样编程BUG问题,且都是些容易被忽略的点拖延你的工作进度,特别是面试中HR也是经常拿这些要点来进行 提问,有时候是不是问你的有点措手不及。今天,深圳达内web培训专家(sz.web.tedu.cn)为您送来福利,在此篇文章中,特将 webScript开发中可能遇到的疑点总结,希望可以帮到各位,文章内容经典,建议看完收藏。

    语句/表达式

    换个角度理解语句(statemaents)和表达式(expressions):表达式不会改变程序的运行状态,而语句会。还有一种叫做表达式语句,可以理解为表达式和语句的交集,如({a:1})、"use strict;"等,我觉得没必要死扣,意义不大。

    字符集

    ES3要求JS必须实现Unicode 2.1及后续版本,而ES5只要求支持Unicode 3 及后续版本。Unicode字符2005年超过了十万字符,至今仍在不断增修,最新版本是8.0。

    分号

    如果你写JS代码不喜欢带分号,而又搞不清什么时候必须加分号,可以这么做:在以“(“、”[“ 、”/“、”+”、”-“开头的语句前面都加上一个分号,如;(a + b).toString()。

    达内深圳web培训专家总结HR面试最看重的JS技术要点

    进制

    ES5严格模式中禁止使用八进制。目前各种引擎对JS的实现是存在差异的,部分支持八进制,部分不支持。八进制被禁止的原因:String和Number 之间经常被相互转换,而以0开头的八进制数据特别容易让人迷惑,也容易让机器迷惑,比如09是该被转换成9还是直接报错?十六进制不存在这个问题,如 0x98。更多信息参阅这里。

    精度

    JS采用IEEE-754 浮点数表示法,这是一种二进制表示法,由于精度原因JS不能表示所有的实数。它能展示的浮点数个数是有限的,比如它不能准确地表示三分之一的数值字面量。这也导致了它在浮点数的计算上存在误差,如0.3-0.2 != 0.2-0.1,因为在计算的过程中,存在数据的溢出,丢失了精度。

    null/undefined

    系统级、出乎意料的或者类似错误的值的空缺使用undefined,而程序级、正常的或意料之中的值的空缺使用null。平时编程给变量赋值时,不要使用 undefined而应该用null。值得注意的是ES3中的undefined是可以被重新赋值的,ES5修复了这个bug。通常我们使用void 0 来还原/代替undefined的值。

    eval

    eval是个不好把握的东西,它在ES3中更像是Function,而在ES5中更像是一个运算符(严格模式下不允许设置别名,否则报错,且将其作为保留 字)。实际上ES3中也不允许给eval设置别名,然而很多实现却依然允许,并将其作为全局代码来执行,浏览器尤其是IE对它实现相当混乱,没有什么规律 可循,不过IE中提供了一个execScript函数,类似全局的eval,这个函数每次执行都会返回null。

    需要使用eval的场景并不多,尽量少用,一般需求使用new Function就能满足。

    引用

    删除属性存在的坑:a = {n: {x: 2}}, b = a.n; delete a.n;这段代码执行之后,b.x依然等于2,原因是{x:2}这个对象被a和b同时引用,delete指令只删除了a对它的引用,b上的引用依然存在。这种问题有可能造成内存泄漏。

    Object扩展

    Object的freeze方法过于严格;defineGetter/lookupGetter和对应的Setter是很好用的属性。

    toLocalString

    如图,你可能还不知道webScript的toLocaleString还可以这么玩。

    this语义

    this上下文只存在两种语义,一种是被当作方法调用,this指向调用它的对象;一种是作为函数调用,指向Global对象(严格模式下为 undefined)。它没有作用域的限制,如下图所示,a由于是作为函数被调用,所以它指向的是window,故而返回false。

    类型

    webScript可以被调用执行的均为Function类型,但是也存在可调用的Object,如低版本IE中的一些宿主对象:document.getElementById、alert等,在很多浏览器中typeof RegExp同样是Object。这绝对是一个不标准的实现,在浏览器摒弃/修正这些错误类型之前应该尽量少依赖它们。

    IE8 getter/setter

    Object.defineProperty虽然是ES5的东西,早在IE8就已经支持了,但支持得并不完善,比如writable、enumerable、configurable这些配置项设置就无效,IE8下主要支持getter/setter。

    JSON.stringify

    JSON.stringify接受三个参数,很多人都知道第三个参数可以设置空白字符来美化输出,但是你可能不知道第二个参数的作用,它为 {Array|Function}类型,如果为Array则用于过滤key,如果为Function则可以对value做处理,如图所示。

    Symbol

    ES6中添加了一种新的数据类型,Symbol,它是一种原始数据类型(图一),具备对象的特性(图二),并可以指向同一个引用(图三),能够作为对象的 key但不可枚举(图四),内置的Symbol会影响程序的执行(图五),Symbol.iterator是个举足轻重的符号,能够让元素具备迭代属性 (图六),花样很多。

    伪数组添加Symbol.iterator的几个办法:鸭式辨型的iterator函数、yield函数和直接使用Array的遍历符号。

    Set/WeakSet

    Set/WeakSet这种数据结构,不能说没用,但确实也没啥大用,前者就是个不允许出现重复成员的数组,顺便还带了点ES6的特性,后者虽说可以一定 程度上防止内存泄漏,但是也容易出错,比如某个引用已经被垃圾回收了,再去使用它可能就返回null。它们都是ES6的配套产物。而 Map/WeakMap倒是两个非常不错的设计,常规的Object结构都为String-Val键值对,而它扩展为AllType-Val,任意类型都 可以作为它的Key,无论是服务端编程还是客户端编程,这个属性都带来了极大的便利性。

    正则

    理解正则零宽的含义:正则中所谓的零宽断言,类似于锚点字符,它们匹配指定的位置而不会匹配内容,如^匹配开头,$匹配结尾,\b匹配单词边界; (?=p)匹配“接下来的字符与p匹配”的位置,(?!p)匹配“接下来的字符不与p匹配”的位置。\b字符匹配单词边界,实际上就是匹配\w与\W之间 的位置(\w匹配[a-zA-Z0-9])。很少会有人用到\B,它匹配的是非单词边界位置,简单理解就是\w & \w之间位置或者\W & \W之间位置。

    持续学习和分享…

    内容都是片段化的分享,比较多,也比较杂,就没有全部列举出来,感兴趣的同学可以follow我的微博,我的想法和笔记都会在上面同步。

    感受

    在这之前犀牛书已经翻阅了差不多六七遍,很多内容都已经深深地刻在了脑海里,但时间久了也会忘记些,时而巩固复习下,毕竟是前端最基础部分。

    带着问题去看书,收获是完全不一样的。犀牛书不难啃,难的是你对这些知识点的理解深度。

    如果想学习的同学可以参加深圳达内web培训,免费试听,或周末免费参加深圳web培训公 开课程试听,这里有强大的师资阵容,“师者,所以传道授业解惑也”,讲师,是教育的主体,是影响整体办学质量、学员学习质量的重要因素。所以深圳达内 web培训竭尽全力为学员提供最强大的师资力量,让学员接受最好的教育,学习最前沿的技术。掌握一门牛逼闪闪技术,待遇自然不在话下。

    选择培训机构等于选择未来开发行业的根基,优秀的web培训机构不仅仅是传授专业开发知识,更重要的是培养学员的开发思维和动手能力,可谓授人以鱼不如授人以渔!而这些,达内可以做到!

上一篇:深圳达内web前端专家总结不容忽略的前端开发技巧

下一篇:深圳达内web前端培训专家解析被HR疯抢web会什么

最新开班日期  |  更多

WEB前端工程师--全日制班

WEB前端工程师--全日制班

开班日期:2月15日

WEB培训前端工程师--周末班

WEB培训前端工程师--周末班

开班日期:2月15日

WEB培训免费训练营一期

WEB培训免费训练营一期

开班日期:2月15日

WEB培训免费训练营二期

WEB培训免费训练营二期

开班日期:2月15日

  • 地址:深圳市福田区八卦四路华晟达(原南方苑)大厦4楼东—深圳WEB开发培训中心
  • 课程培训电话:186-8884-0703     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56