`

js应避免的错误

 
阅读更多

 

对于初学编程语言的朋友来说,经常会犯一些比较“经典”的错误。在这一系列文章中,我们将介绍如何让初学编程的朋友避免一些基本的错误,并且了解如何正确的编程和开发代码。

这一篇文章中,我们介绍5个javascript代码开发中需要注意的问题和技巧。

冗余的DOM操作

DOM操作众所周知是比较重量级的。有效的限制交互可以大大的帮助你提高你的代码的性能。看看下面这段代码:

// anti-pattern

for (var i = 0; i < 100; i++){

var li = $(“<li>”).html(“This is list item #” + (i+1)); 

 

$(“#someUL”).append(li);

}

这段代码循环修改DOM100次,但是创建了100个jQuery对象。更好的方式是使用document片段,或者创建一个String来包含100个

元素,然后再添加到DOM中去。这里你只需要执行一次DOM操作。 

优化后的代码:

var liststring = “”;

for (var i = 100; i > 0; i--){

liststring += “<li>This is list item #” + (99- i);  

}

document.getElementById(“someUL”).innerHTML(liststring);

以上代码只调用了一次DOM操作,但是大量使用了字符串的连接操作。除了使用字符串连接,我们可以使用数组来显示。

var liststring = “<li>”  

var lis = [];

for (var i = 100; i > 0; i--){

lis.push(“This is list item #” + (99- i));

}

liststring += lis.join(“</li><li>”) + “<li>”;  

document.getElementById(“someUL”).innerHTML(liststring);

当创建大量的字符串时,保存每一个字符串到数组里,然后调用join()方法来连接。在javascript中,这是不使用模板类库和框架外的最高效的字符串连接操作方式。

在线调试

变量和方法名不一致

这可能不是一个性能问题,但是对于编程来说非常重要,特别是当你需要维护别人的代码。看看如下例子:

var foo = “bar”;

var plant = “green”;

var car = “red”;

如果你再添加一个变量叫“something”可能就不是那么合适了,你应该保持命名的一致。这也就是为什么在一些编程语言中,我们使用大写变量名来代表常量。

对于方法来说,我们也需要保持一致,如下:

function subtractFive(number){

return number - 5;

}

如果你有一个以上的减5方法,那么你如果定义加5方法的话,应该使用如下命名方式:

function addFive(number){

return number + 5;

}

有时候如果你定义一个返回方法,那么一般使用getXXX(),如果你只是执行操作不返回,那么最好使用doXXX()方法名。

构造器方法最好使用类似其它语言的命名方式,首字母大写,如下:

function Gbin1(color){

this.color = color;

}

不管怎么,你都应该尽量的让你的命名更加富有意义,能够给别人更多的信息。

在for..in循环中使用 hasOwnProperty 方法

在javascript中数组是不关联的。而对象来说是hashtable类型的。你可以使用for 。.. in循环来迭代对象属性。如下:

for (var prop in someObject) {

alert(someObject[prop]); // alert‘s value of property

}

但是问题在于,以上代码会循环proptype chain中的所有的属性,有时候这样会出错,你可能只想使用实际存在的属性。使用hasOwnProperty方法可以帮助你解决这个问题。

for (var prop in someObject) {

if (someObject.hasOwnProperty(prop)) {

alert(someObject[prop]); // alert‘s value of property

}

}

这个方法可以帮助你得到实际存在的属性值。

比较boolean值

比较boolean值非常浪费计算时间。看看下面这个例子:

if (foo == true) {

// do something for true

} else {

// do something for false

}

注意上面的==true条件,这个非常没有必要因为foo本身就是boolean值。如果比较,应该使用如下代码:

if (foo) {

// do something for true

} else {

// do something for false

}

或者测试foo为false,如下:

if (!foo) {

// do something for true

}else {

// do something for false

}

事件绑定

事件在javascript中是非常的复杂的话题。以往我们使用行内oncick事件的时代已经过去了。。

我们应该使用事件bubbling或者delegation。

举个例子,如果我们需要让一组图片展示到lightbox window里。那么下面这段代码你绝对不应该使用。

这里我们使用jQuery作为例子。

HTML:

<div id=“grid-container”>

<a href=“someimage.jpg”><img src=“someimage-thumb.jpg”></a>

<a href=“someimage.jpg”><img src=“someimage-thumb.jpg”></a>

<a href=“someimage.jpg”><img src=“someimage-thumb.jpg”></a>

.......

</div>

Javascript(不推荐的写法):

$(‘a’).on(‘click’, function() {

callLightbox(this);

});

这样书写会导致绑定事件到每一个链接元素,最好绑定到指定的图片容器,如下:

$(“#grid-container”).on(“click”, “a”, function(event) {

callLightbox(event.target);

});

在线调试

避免冗余的比较

在javascript和PHP中:

// javascriptreturn foo.toString() !== “” ? true : false;

// php

return (something()) ? true : false;

但是条件比较永远返回true或者false,所以你没有必要清楚的添加返回值。以下代码即可:

// javascriptreturn foo.toString() !== “”;

// php

return something();

希望大家能够理解并且了解如何避免代码书写中的问题,如果你有其它的例子,请与我们分享!

分享到:
评论

相关推荐

    屏蔽一切js错误,屏蔽一切js错误

    尽管这种方法可以避免错误提示对用户的干扰,但如果错误频繁发生,还是建议优先解决这些问题,而不是仅仅通过屏蔽来掩盖。 综上所述,虽然“屏蔽一切JS错误”的方法能够在一定程度上改善用户体验,但在实际开发中...

    js技巧 js错误对照表

    JavaScript,简称JS,是Web开发中的重要脚本语言,用于实现客户端的动态效果和交互。在编程过程中,理解和处理JS错误至关重要,因为它们可以帮助我们识别并修复代码中的问题。以下是一些关于JS技巧和错误对照表的...

    js捕获错误.txt

    ### JavaScript中的错误处理 在JavaScript编程中,错误处理是一项重要的技术,它可以帮助开发者捕捉并解决程序执行过程中出现的问题。本文将详细介绍如何在JavaScript中捕获和处理错误。 ### Error基类 ...

    用javascript来验证的错误提示

    2. **Vuelidate**:针对Vue.js的轻量级状态验证工具,支持自定义错误消息和复杂的验证逻辑。 3. **Formik**:适用于React的表单管理库,包含强大的验证功能。 六、无障碍性(Accessibility) 1. **ARIA属性**:...

    js验证错误信息.rar

    在JavaScript(JS)中,验证错误信息是网页前端开发中不可或缺的部分。这通常涉及到用户输入数据的检查,确保数据的有效性和安全性。"js验证错误信息.rar" 包含的资源显然是一个封装了验证功能的JS类,适用于文本框...

    JS常见错误及开发技巧

    JavaScript,简称JS,是网页开发中的重要脚本语言,它允许开发者实现动态效果和交互功能。在实际开发中,常见的错误和编码规范是确保代码质量和兼容性的重要因素。以下是一些关于JS开发的关键知识点和技巧: 1. **...

    IE的js错误查找小工具

    在IT行业中,JavaScript是网页开发不可或缺的一部分,而作为曾经占据主导地位的浏览器,Internet Explorer(IE)在处理JS错误时的特性和问题也一直是开发者关注的重点。本文将深入探讨“IE的js错误查找小工具”这一...

    js一句话屏蔽脚本错误

    在JavaScript编程过程中,为了提升用户体验或者避免因错误信息泄露服务器信息,有时我们需要对浏览器执行脚本时出现的错误进行屏蔽处理。本文将详细介绍如何利用一行JavaScript代码来实现脚本错误的屏蔽,帮助开发者...

    JavaScript中常见错误分析.pdf

    "JavaScript中常见错误分析" JavaScript是一种新型的描述语言,可以被嵌入HTML的文件...JavaScript中的错误是不可避免的,但是通过学习和掌握正确的编程技巧和错误处理方法,可以减少错误的出现,提高编程效率和质量。

    firefox firebug js错误

    在IT行业中,JavaScript(JS)是网页开发中的关键语言,而Firefox Firebug是一...同时,保持软件更新和使用良好的编程实践也是避免错误的关键。当遇到问题时,不要害怕使用调试工具,它们能帮助你快速定位并解决错误。

    monitorsjs是一个轻量级前端错误监控插件

    在使用monitors-js时,注意避免过度监控,以免影响应用性能。合理的配置和错误过滤策略是必要的。同时,确保错误报告服务器能承受大量的请求,以防止在高并发场景下出现问题。 总的来说,monitors-js作为一款轻量级...

    最容易犯的JavaScript错误.doc

    了解并避免这些常见的JavaScript错误能够提高代码质量和性能,同时减少调试时间。在编写JavaScript代码时,始终关注变量的作用域、数据类型、数组操作以及闭包的正确使用,是提高代码质量的关键。通过不断学习和实践...

    深入分析javascript中的错误处理机制

    JavaScript是一种动态类型的语言,这意味着在编写代码时,错误和异常的发生是难以避免的。为了确保程序的健壮性,JavaScript提供了一套完整的错误处理机制,使得开发者能够捕获、处理和恢复从语法错误到逻辑错误的...

    详解JavaScript的BUG和错误

    因此,在编写JavaScript程序时,程序员应该注意变量的类型,避免类型混淆。 总的来说,JavaScript的BUG和错误处理是编程中一项非常重要的工作。通过合理利用严格模式和在编码时注意变量类型和逻辑设计,可以大大...

    Node.js 错误处理-3课时 课件.zip

    在Node.js中,错误处理是程序健壮性的重要组成部分,因为任何编程环境中,错误和异常都是难以避免的。本课程的3个课时主要聚焦于Node.js中的错误处理机制,帮助开发者理解并有效地管理可能出现的问题。 第一课时:...

    javascript错误集

    确保变量名的正确性是避免这类错误的关键。 5. **空输入检查:** 当用户没有输入任何值时,应该给出提示。检查 `num.value.length` 是否小于 `1` 是一种有效的验证方式。如果输入为空,程序应显示提示并聚焦到...

    JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题.docx

    在JavaScript中,DOM事件处理程序的...同时,通过持续实践和测试,可以避免这些低级错误,提高代码质量。在编写类似`event.js`这样的库时,应该进行详尽的测试,特别是在不同浏览器上,以确保所有功能都能按预期工作。

    【JavaScript源代码】nodejs的错误处理过程记录.docx

    2. **错误捕获**:在适当的层级捕获错误,避免让未处理的错误导致程序崩溃。 3. **错误日志记录**:对于所有捕获的错误,都应该记录下来以便后续诊断。 4. **优雅关闭**:处理完错误后,确保所有打开的资源都能够被...

    错误处理的艺术:精通JavaScript中的异常管理

    - **使用合适的错误类型**:JavaScript提供了多种错误类型,如`TypeError`、`ReferenceError`等,应根据实际情况选择合适的一种。 - **避免过度使用`try...catch`**:过度使用可能会隐藏代码中的问题,只应在必要的...

    Google JavaScript 编码规范

    5. **异常处理**:在处理异常时,应尽量避免使用空的`catch`语句,这样做可能会隐藏程序的错误,使得调试变得困难。 6. **自定义异常**:使用`throw`语句时,最好提供一个错误信息或抛出一个`Error`对象,有助于...

Global site tag (gtag.js) - Google Analytics