<b id="f87e2ae9"></b>



  • 
       
       
       

        1. 狗万官网酒店 > 狗万官网下载 > 10种JavaScript最广大的错误(总结)_javascript艺术

          10种JavaScript最广大的错误(总结)_javascript艺术

          来源: 2019-08-04 19:43 我来投稿 参与评论
          这篇文章主要介绍了10种JavaScript最广大的错误(总结),查阅了底数千个档次然后,察觉了 10 个最广大的 JavaScript 错误。咱会告诉你什么原因导致了那些错误,以及如何防止这些错误发生

          前言

          查阅了底数千个档次然后,察觉了 10 个最广大的 JavaScript 错误。咱会告诉你什么原因导致了那些错误,以及如何防止这些错误发生。如果你能够避免落入这些 “陷阱”,你将会变成一个更好的开发者。

          JavaScript 大规模错误 Top 10:

          为了便于阅读,咱将每个错误描述都尽量简化。下一场,让咱深深到每一个错误,来了解是什么会导致它,以及如何避免这个题目。

          1、Uncaught TypeError: Cannot read property

          如果你是一番 JavaScript 付出人员,可能你看到这个错误的用户数比你想的中心多。顶你读取一个未定义的目标的习性或盗用其艺术时,本条错误会在 Chrome 外方出现。 您可以很容易的在 Chrome 开发者控制台中开展测试。

          发生这种状况之缘故很多,但广大的一种是在渲染 UI 组件时对于状态的初始化操作不当。

          咱来看一下在实际应用程序中发生之事例:咱挑选 React,但该情况也同样适用于 Angular、Vue 或其他其他框架。

          两个至关重要的流程:

          1. 组件的状态(例如 this.state)初步于 undefined。
          2. 顶异步获取数据时,随便它是在组织函数 componentWillMount 还是 componentDidMount 外方获取的,组件在数量加载之前至少会呈现一次,顶 Quiz 主要次呈现时, this.state.items 是 undefined。

          这很容易解决。最简单的主意:在组织函数中初始化 state。

          在你的运用程序中的具体代码可能是不同之,但我们愿意我们已经给你足够的头脑,以歼灭或避免在你的运用程序中出现的这个题目。如果还没有,请继续阅读,因为我们将在下覆盖更多相关错误的演示。

          2、 TypeError: ‘undefined' is not an object

          这是在 Safari 外方读取属性或盗用未定义对象上的主意时发生之错误。您可以在 Safari Developer Console 外方轻松测试。这与主要线中提出的 Chrome 的错误基本相同,但 Safari 利用了不同之错误消息提示语。

          3、 TypeError: null is not an object

          这是在 Safari 外方读取属性或盗用空对象上的主意时发生之错误。 您可以在 Safari Developer Console 外方轻松测试。

          诙谐的是,在 JavaScript 外方, null 和 undefined 是并不同,这就是为什么我们见到的是两个不同之错误信息。

          undefined 一般是一番尚未分配的日产量,而 null 表示该值为空。 要检查它们不相等,请尝试使用严格的相等运算符 ===

          在我们办事中,这种错误可能发生之一种情景是:如果在加载元素之前尝试在 JavaScript 外方应用元素。 因为 DOM API 对于空白的目标引用返回值为 null。

          其他执行和处理 DOM 元素的 JS 代码都应有在创立 DOM 元素之后执行。

          JS 代码按照 HTML 中的规定从上到从开展解释。 故而,如果 DOM 元素之前有一番标签,本子标签内的 JS 代码将在新石器解析 HTML 页面时执行。 如果在加载脚本之前尚未创建 DOM 元素,则会出现此错误。

          在这个例子中,咱可以通过添加一个 Listener 来解决这个题目,本条事件侦查会在页面准备好的时光通知我们。 一旦 addEventListener 把触发, init() 艺术就足以利用 DOM 元素。

          4、 (unknown): Script error

          顶未捕获的 JavaScript 错误(穿越 window.onerror 拍卖程序引发的错误,而不是捕获在 try-catch 外方)把浏览器的跨域策略限制时,会产生这类的本子错误。 例如,如果您将您的 JavaScript 代码托管在 CDN 上,则其它未被捕获的错误将把告知为“本子错误” 而不是包含有用之库房信息。这是一种浏览器安全措施,意志防止跨域传递数据,否则将不容许进行通信。

          要拥有实际的错误消息,请执行以下操作:

          1. 安装 ‘Access-Control-Allow-Origin' 头部

          名将 Access-Control-Allow-Origin 表面头设置为 * 表示可以下其他域正确访问资源。

          在 Nginx 外方设置如下:

          名将 add_header 指令添加到提供 JavaScript 文件的职务块中:

          2. 在 <script> 外方设置 crossorigin="anonymous"

          在您的 HTML 代码中,对于您设置了 Access-Control-Allow-Origin 的每股脚本,在 script 标签上设置 crossorigin=“anonymous”。在脚本标记中添加 crossorigin 属性之前,请确保验证上述 header 科学发送。

          在 Firefox 外方,如果存在crossorigin属性,但Access-Control-Allow-Origin头不存在,则脚本将不会执行。

          5、 TypeError: Object doesn't support property

          这是您在调用未定义的主意时发生在 IE 中的错误。 您可以在 IE 开发者控制台中开展测试。

          这相当于 Chrome 中的 “TypeError:”undefined“isnotafunction” 错误。

          正确,对于相同的逻辑错误,不同之青铜器可能具有不同之错误消息。

          对于使用 JavaScript 命名空间的 Web 运用程序,这是一番 IE 探测器的广大的题目。 在这种情况下,99.9% 的缘故是 IE 无法将手上名称空间内的主意绑定到 this 关键字。

          例如:如果你 JS 外方有一番命名空间 Rollbar 以及方法 isAwesome。 一般,如果您在 Rollbar 命名空间内,则可以利用以下语法调用 isAwesome 艺术:

          this.isAwesome(); 

          Chrome,Firefox 和 Opera 会喜洋洋接受这个语法。 但是 IE 却不会。 故而,利用 JS 命名空间时最安全的取舍是前后以切实名称空间作为前缀。

          Rollbar.isAwesome(); 

          6、 TypeError: ‘undefined' is not a function

          顶您调用未定义的函数时,这是 Chrome 外方产生之错误。 您可以在 Chrome 付出人员控制台和 Mozilla Firefox 付出人员控制台中开展测试。

          实行上面的编码会导致以下错误:

          “Uncaught TypeError:this.clearBoard is not a function”。

          原因应该是明亮的,即执行上下文不清楚导致的目的错误。

          7、 Uncaught RangeError

          顶你调用一个不停止的递归函数就会发生这种错误。您可以在 Chrome 开发者控制台中开展测试。

          另外,如果您将值传递给超出范围之函数,也可能会发生这种状况。

          有的是函数只接收其输入值的一定范围之数字。 例如:

        2. toExponential(digits) 和 toFixed(digits) 收到 0 到 100
        3. toPrecision(digits) 收到 1 到 100
        4. 8、 TypeError: Cannot read property ‘length'

          这是因为读取未定义变量的长短属性而发生之错误。 您可以在 Chrome 开发者控制台中开展测试。

          您通常会在数组中找到定义之长短,但是如果数组未初始化或者变量在另一番上下文中,则可能会遇到此错误。让咱用下面的事例来理解这个错误。

          实行以上代码会报错:

          Cannot read property 'length' of undefined

          有两种方式可以解决这个题目:

          9、 Uncaught TypeError: Cannot set property

          顶我们尝试访问一个未定义的日产量时,其它总是返回 undefined,咱决不能获取或设置任何未定义的习性。 在这种情况下会将抛出 “Uncaught TypeError: Cannot set property”。

          10. ReferenceError: event is not defined

          顶您尝试访问未定义的日产量或超出当前作用域的日产量时,会引发此错误。 您可以在 Chrome 探测器中测试。

          如果在利用 event 时遇到此错误,请确保使用传入的风波对象作为参数。像 IE 这样的旧浏览器提供了一下全局变量事件,但并不是成套浏览器都支持。

          总结

          咱见到上面的 10 个最广大的错误,其实所涉及的知识点并不费工夫。顶你认真读过《你不掌握的 JavaScript》上卷后,那些错误基本就不会再出现了。

          结果是对 JavaScript 基础知识掌握的不踏实。

          上述就是本文的方方面面内容,瞩望对大家的上学有所帮助,也愿意大家多多支持脚本的师。

          义务编辑:狗万官网酒店
           
           
          0% (0)
           
           
          0% (0)
          机长评论( ) 请自觉遵守互联网相关的富民政策法规,不准发布色情、暴力、反动的议论。
          地名: 匿名?