知识大全 20条常见的编码陷阱之JavaScript篇
Posted 函数
篇首语:知识养成了思想,思想同时又在融化知识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 20条常见的编码陷阱之JavaScript篇相关的知识,希望对你有一定的参考价值。
20条常见的编码陷阱之JavaScript篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
不管你现在的编程技能有多么的高超 曾经你也是个亦步亦趋 不断的学习的初学者 在编程这条曲折的道路上 我想你肯定犯过一些低级的错误 遇见过一些普通的编码陷阱
不必要的DOM操作
例如下面这段代码
// anti pattern
for (var i = ; i < ; i++)
var li = $( <li> ) ( This is list item # + (i+ ))
$( #someUL ) append(li)
这段代码对DOM进行了 次修改 并且创建了 个不必要的jQuery对象 正确的做法是使用一个文档片段 或者创建一个字符串 把 个<li>元素赋给该字符串 然后附加到HTML中 这样就只需运行DOM一次 代码如下
var liststring = ;
for (var i = ; i > ; i )
liststring += <li>This is list item # + ( i)
document getElementById( someUL ) innerHTML(liststring)
正如上面所描述的一样 下面再提供一个方式 使用数组
var liststring = <li>
var lis = [];
for (var i = ; i > ; i )
lis push( This is list item # + ( i))
liststring += lis join( </li><li> ) + </li> ;
document getElementById( someUL ) innerHTML(liststring)
这是在JavaScript创建重复HTML最快最简单的方法 无需使用模板库或框架
不一致的变量名和函数名
这个问题是非常重要的 尤其当你在别人的代码上工作时 一定要保持标识符(变量名和函数名)一致 例如下面这段代码
var foo = bar ;
var plant = green ;
var car = red ;
通常 人们并不会设置变量名叫Something 这涉及到命名规则问题 命名应清晰明了 一目了然 很多编程语言地变量命名都使用大写
下面是对函数的命名
function subtractFive(number)
return number ;
语法结构清晰并且能起到解释性功能
例如想要对给定的数字加 仍采用上述命名模式 比如
function addFive(number)
return number + ;
有时 你会根据返回值命名 例如该函数要返回一个HTML字符串 那么可以命名为getTweetHTML() 如果函数只是做一些操作 无需返回值 那么可以在前面加一个do前缀 例如doFetchTweets()
构造函数通常会遵循类原则 大写第一个字母
function Dog(color)
lor = color;
命名应带有描述性 比如操作型的函数在前面加do 另外要具备可读性和提示性
在for…Loops中使用hasOwnProperty()方法
JavaScript数组是没有关联的 可以把它当做哈希表 使用循环来遍历对象属性
for (var prop in someObject)
alert(someObject[prop]) // alert s value of property
然而 存在的问题是for…in loop是在对象属性链上遍历每个枚举类型的属性 如果你只想使用对象实际拥有的属性 这可能有问题的 那怎么解决呢?你可以使用hasOwnProperty()方法 代码如下
for (var prop in someObject)
if (someObject hasOwnProperty(prop))
alert(someObject[prop]) // alert s value of property
比较布尔值
把布尔值作为条件进行比较 其实这是在浪费电脑的计算时间 看下面这个例子吧
if (foo == true)
// do something for true
else
// do something for false
其实foo==true这个比较完全是多余的 因为foo已经是布尔类型 直接这样写就行
if (foo)
// do something for true
else
// do something for false
又或者这样写
if (!foo)
// do something if foo is false
else
// do something if foo is true
事件绑定
在JavaScript中 事件是个复杂的问题 事件冒泡(event bubbling)和委托正在取代内联事件(inline onclick)操作(一些特殊的 初始页 除外)
假设你有一个图片网格 需要启动一个modal lightbox窗口 千万不要采取下面的做法 示例采用的是jQuery 如果你使用相似的库或者其他 冒泡机制也同样适合传统的JavaScript
相关的HTML代码
<div id= grid container >
<a ><img src= someimage thumb jpg ></a>
<a ><img src= someimage thumb jpg ></a>
<a ><img src= someimage thumb jpg ></a>
…
</div>
不好的JavaScript写法
$( a ) on( click function()
callLightbox(this)
)
这段代码假设调用lightbox 里面传递一个anchor元素并且引用全屏图片 与其绑定每个anchor元素还不如直接使用#grid container元素
$( #grid container ) on( click a function(event)
callLightbox(event target)
)
在这段代码中 this和event target都表示anchor元素 同样你也可以在任何父元素上使用 只要保证所定义的元素是事件目标就行(event s target)
避免三元冗余
在JavaScript和PHP中 过度使用三元语句是很常见的事情
// javascript
return foo toString() !== ? true : false;
// php
return (something()) ? true : false;
条件判断的返回值永远只有false和true 言外之意就是你无需把true和false显示添加到三元运算中 相反 你只需简单的返回条件
// javascript
return foo toString() !== ;
// php
cha138/Article/program/Java/JSP/201311/19714相关参考
下拉菜单全攻略之Javascript篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 随着互联网
知识大全 JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一
JavaScript的20条常规建议 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixin
JavaScript的9个陷阱及评点 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 来自Nine
对于熟悉C/C++或Java语言的工程师来说javascript显得灵活简单易懂对代码的格式的要求也相对松散很容易学习并运用到自己的代码中也正因为这样javascript的编码规范也往往被轻视开发
数据结构课程集中讨论软件开发过程中的设计阶段同时设计编码和分析阶段的若干基本问题此外为了构造出好的数据结构及其实现还需考虑数据结构及其实现的评价与选择因此数据结构的内容包括三个层次的五个要素如图所
面试过程是面对面斗智斗勇的过程,如果遇到以下问题,要学会积极应对。1.你对自己的未来有什么规划?如果说"我也没想过"或者"成为管理层",都显得你有些苍白,可以说"我希望自己的精力与专业知识能够融入所从
escape是什么意思? escape采用ISOLatin字符集对指定的字符串进行编码所有的空格符标点符号特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集
牛皮癣饮食之早餐篇,牛皮癣是种常见的皮肤疾病,对于牛皮癣患者来说,日常的饮食非常重要。俗话说的好“一日之计在于晨”,所以所早餐对我们来说非常重要,下面我们来看一下牛皮癣患者的早餐饮食。1、清晨牛皮癣患
ASP.NET效率陷阱之——Attributes 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n