加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Javascript面试的完美指南(开发者视角)

发布时间:2019-02-22 02:08:20 所属栏目:建站 来源:前端小智
导读:为了说明 JS 面试的复杂性,首先,请尝试给出以下结果: onsole.log(2.0==2==newBoolean(true)==1) 十有八九的会给出false, 其实运行结果是true,原因请看 这里。 1) 理解 JS 函数 函数是 JavaScript 的精华,是 JS 一等公民。JS 函数不仅仅是一个普通的

在某些情况下,这可能不是致命的,但最好通知服务器。为了创建这样的代码,首先抛出一个错误,, 从 window 层级捕捉错误事件,然后调用API将该消息记录到服务器。

  1. reportErrorToServer = function (error) { 
  2.   $.ajax({type: "POST",  
  3.           url: "http://api.xyz.com/report", 
  4.           data: error, 
  5.           success: function (result) {} 
  6.   }); 
  7. // Window error event 
  8. window.addEventListener('error', function (e) { 
  9.   reportErrorToServer({message: e.message}) 
  10. })} 
  11. function mainLogic() { 
  12.   // Somewhere you feel like fishy 
  13.   throw new Error("user feeds are having fewer fields than expected..."); 
  14. }  

这段代码主要做三件事:

  • 监听window层级错误
  • 无论何时发生错误,都要调用 API
  • 在服务器中记录

你也可以使用新的 Boolean 函数(es5,es6)在程序之前监测变量的有效性并且不为null、undefined

  1. if (Boolean(someVariable)) { 
  2. // use variable now 
  3. } else { 
  4.     throw new Error("Custom message") 
  5. }  

始终考虑错误处理是你自己, 而不是浏览器。

其他(提升机制和事件冒泡)

以上所有概念都是 JavaScript 开发人员的需要知道基本概念。有一些内部细节需要知道,这些对你会有很在帮助。 这些是JavaScript引擎在浏览器中的工作方式,什么是提升机制和事件冒泡?

提升机制

变量提升是 在代码执行过程中将声明的变量的作用域提升到全局作用哉中的一个过程,如:

  1. doSomething(foo); // used before  
  2. var foo; // declared later  

当在 Python 这样的脚本语言中执行上述操作时,它会抛出一个错误,因为需要先定义然后才能使用它。尽管 JS 是一种脚本语言,但它有一种提升机制,在这种机制中,JavaScript VM 在运行程序时做两件事:

  1. 首先扫描程序,收集所有的变量和函数声明,并为其分配内存空间
  2. 通过填充分配的变量来执行程序, 没有分配则填充 undefined

在上面的代码片段中,console.log 打印 “undefined”。 这是因为在第一次传递变量 foo 被收集。 JS 虚拟机 查找为变量 foo 定义的任何值。 这种提升可能导致许多JavaScript 在某些地方抛出错误,和另外地方使用 undefined 。

学习一些 例子 来搞清楚提升。

事件冒泡

现在事件开始冒泡了! 根据高级软件工程师 Arun P的说法:

“当事件发生在另一个元素内的元素中时,事件冒泡和捕获是 HTML DOM API 中事件传播的两种方式,并且这两个元素都已为该事件注册了处理程序,事件传播模式确定元素接收事件的顺序。“

通过冒泡,事件首先由最内部的元素捕获和处理,然后传播到外部元素。对于捕获,过程是相反的。我们通常使用addEventListener 函数将事件附加到处理程序。

  1. addEventListener("click", handler, useCapture=false) 

useCapture 是第三个参数的关键词, 默认为 false。因此, 冒泡模式是事件由底部向上传递。 反之, 这是捕获模式。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读