实用干货javascript的7个使用技巧(JavaScript最容易犯的10)
为了回馈社区,codeburst 从他们公司的上千个项目中,整理了 JavaScript 出现次数最多的 10 个错误。如果能避免这些错误的话,那么你能成为一个更好的程序员。以下就是排名最高的 10 个 错误:
Uncaught TypeError: Cannot read property
这个错误大家应该经常碰到,当你在 Chrome 浏览器中,从一个 undefined 的对象上尝试读取一个属性或者调用一个方法的时候,就会抛出这个错误:
TypeError: ‘undefined’ is not an object (evaluating
上述相同的错误,在 Safari 浏览器中给出的是不同的错误信息,在 Safari 浏览器上实验可以得到这个结果。
TypeError: null is not an object (evaluating在 Safari 浏览器上,从一个 null 对象上读取属性或者调用方法的时候,就会抛出这个错误。在 JavaScript 的世界里,null 和 undefined 是不同的,null 代表这个对象是一个空的值,而 undefined 代表这个对象的值没有定义。
这种错误较为常见的出现方式是,在页面尚未加载完毕的时候,就直接操作 DOM,而实际上这个 DOM 节点现在还是一个 null。所以一定要等页面加载完毕后,再操作 DOM:
(unknown): Script error
如果你的 JavaScript 代码放在 CDN 上,那么这段代码抛出的任何未捕获的错误都会报脚本错误。这是浏览器的防止代码跨源访问的一种安全机制。
TypeError: Object doesn’t support property在 IE 浏览器上,当你调用一个未定义的方法时,就会出现这个错误。这个和下面介绍的 Chrome 浏览器上抛出的 “TypeError: ‘undefined’ is not a function”错误是一个类型。
TypeError: ‘undefined’ is not a function
在 Chrome 浏览器上调用一个未定义的方法时,会抛出这个错误。
JavaScript 近些年的发展趋势比较快,开发复杂度逐步增加,所以开发者可能会弄混当前的 this 究竟是指向哪个对象:
Uncaught RangeError: Maximum call stack
这种情况是因为函数递归,超出了栈的最大大小限制,这个时候应该仔细检查参数的变化,它可能没有按照你想象的那样变化:
TypeError: Cannot read property ‘length’
从一个未定义的变量上尝试读取它的长度属性,会发生这样的错误:
开发者错误的假定当前的数组一定是初始化后的,而实际上忘记传递参数是常有的事儿:
Uncaught TypeError: Cannot set property
我们不能在一个未定义的变量上,调用任何 set 或者 get 方法:
ReferenceError: event is not defined
在事件处理的时候,比较容易得到这样的错误。旧版本的 IE 浏览器提供了一个全局可访问的 event 变量,Chrome 自动将 event 对象绑定到回调函数上,Firefox 却不会自动绑定。于是 jQuery 就为大家提供了一个统一的访问事件对象的方式。
总结
大多数错误都是因为 null 或 undefined 引起的错误。使用静态类型的 JavaScript 语言例如 TypeScript 可以有效帮你应对这些情况,它会给予你一些警告信息。希望大家在以后的编程中,尽量避开这些错误,它们看起来微不足道,却又是大家最常犯的错误。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com