博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端代码中经常遇到的问题
阅读量:6236 次
发布时间:2019-06-22

本文共 1632 字,大约阅读时间需要 5 分钟。

虽然现在有很多代码质量的检测工具但是依然不能检测完全,一下几点是我们在写前端代码中经常遇到的问题。

重复的收集元素

在使用jQuery或者Zepto,原生的元素选择器的时候,重复收集元素。

$(".items").addClass("hide");$(".items").removeClass("hide");

这种问题遇到的比较多,其实在webstrom中会有红字提醒标示。告诉你不推荐你这样使用。

可以

var $items = $(".items");$items.addClass("hide");$items.removeClass("hide");

重复的条件判断

重复的条件计算很常见,但通常也是有一个通用的模式来避免它们。你可能会看到一段代码写成这样:

var performMiracle = function() {    // 如果浏览器支持A特征...    if(features.someFeature) {    }    // ... 如果不支持    else {    }};

这是可行的,但不是最高效的代码,上面的条件可能会多次计算。写成下面的样子会更好:

var performMiracle = features.someFeature ? function() {    // Plan A stuff} : function() {    // Plan B stuff};

重复的对象创建

相比较重复的操作,重复的对象创建更难发现,通常是表现在正则表达式上。看一下下面的这段代码:

function cleanText(dirty) {    // 去除SCRIPT tags    clean = dirty.replace(/
]*>([\s\S]*?)<\/script>/gi, ""); // Do some more cleaning, maybe whitespace, etc. return clean;}

上面的代码会不断的重复创建一个新的(但是相同的)正则表达式对象,对于这种情况,如果你在这个函数的外部创建这个对象,就能避免这种情况的出现:

var scriptRegex = /
]*>([\s\S]*?)<\/script>/gi;function cleanText(dirty) { // Get rid of SCRIPT tags clean = dirty.replace(scriptRegex, ""); // Do some more cleaning, maybe whitespace, etc. return clean;}

在上面的例子中,正则表达式对象只创建了一次,但多次使用——省了很多CPU处理。


以下为自己的常遇到收集整理

忘记声明数据类型

下面这份代码

function mean() {    var sum;    for (var i = 0; i < this.data.length; i++){        sum += this.data[i];    }    return sum / (this.data.length);}

乍一看没说明问题,但是返回的结果却是NaN;如果做number类型叠加记得声明 var sum = 0;没有什么大的错误就是很容易忽略的小问题。

手机设备事件绑定问题

手机设备事件绑定类型不正确,比如用click 在ios 设备上是失效的,应该换成 touchend或者 touchstart

如果需要的话可以用

$.bind('click touchend' ,function(event){...});

未完结

转载于:https://www.cnblogs.com/yunkou/p/4241279.html

你可能感兴趣的文章
java垃圾回收机制
查看>>
Find Integer
查看>>
ASP.NET MVC4使用JCrop裁剪图片并上传
查看>>
Run Hyper-V and VirtualBox on the same machine (轉載)
查看>>
Spring Boot 入门
查看>>
XML、JSON、ProtocolBuffer特点比较
查看>>
开始学习C++
查看>>
poj2251 Dungeon Master
查看>>
好玩的linux命令
查看>>
git 提示错误:(non-fast-forward)
查看>>
Math.cbrt() Math.sqrt() Math.pow()
查看>>
让外界可以访问电脑上的网站的几种方式——花生壳,域名,IIS(待)
查看>>
php 编译安装指导
查看>>
java反射机制
查看>>
Joda-Time 简介
查看>>
Vue.js生产与发布环境的两三事
查看>>
Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(二)
查看>>
一步步学习ASP.NET MVC3 (7)——Controller,Action,ActionResult
查看>>
Visual Studio 2010新功能-IntelliTrace(智能跟踪)调戏了我的硬盘
查看>>
yum lamp for Centos6.4
查看>>