首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

应当避免的JavaScript编程有关问题

2012-07-31 
应当避免的JavaScript编程问题如果刚开始学习JavaScript,无论完全自己写程序,或者使用一些框架 (jQuery, M

应当避免的JavaScript编程问题

如果刚开始学习JavaScript,无论完全自己写程序,或者使用一些框架 (jQuery, Mootools, Dojo, YUI) ,下面这几个错误你必须要避免, 它们都是我学习JavaScript的经验之谈。


等价比较(Equality Operator) 

JavaScript中有两个相等比较操作符.第一个就是两个等于号(==),它只比较值是否相等,而不关心数据类型。例如,当比较1和true时,结果为true.

if(1==true){

    //这部分代码会被运行

}

以下是几个不同的例子.


三个等于号的全等比较符,除了比较值之外,还会比较数据类型.如果数据类型也不同,结果就是false.只有当数据类型和值都相同时结果才为true.

1

2

3

4

5

6

7

8

9

10

11

12

13

14


var arr1=[1,2,3]

  , arr2=['a','b','c'];

 

//重置两个数组

arr1 = arr2=[];



//为两个数组各增加一项

arr2.push(32);

arr1.push(10);

 

//输出看到相同的结果//OUTPUT: 10, 32

alert( arr1.join());

alert( arr2.join());

第1行和第2行分别创建了两个数组.然后在第5号它们都被清空了,但这个语句的问题是同时把arr1和arr2都指向了相同的数组,而不再是之前各自独立的数组.  所以改变其中一个就也自动体现到另一个.

在第8行为arr2增加了32,在第9行,为arr1增加了一个10.通过检查13行和14行的输出结果可以看到两个数组有相同的内容.


不要忘记使用var

在JavaScript中,可以使用var定义变量, 但是也可以不使用var直接定义. 这两种方式有很大的不同.看看下面的例子:


Html中的黑色的部分将是innerHTML属性的输出结果.其中HTML标签<p>也被输出了.

再来看一个innerText的例子.

应当避免的JavaScript编程有关问题

可以看到innerText只取得了文本内容,而没有HTML标签..


批量添加节点(Adding Nodes in Bulk)

为DOM元件添加一系列节点是比较普遍的.比如将Ajax调用返回的名字列表加入到ul元件中.下面是一种做法:

var container = document.getElementById( 'container' )  , str = ''; for( var i = 1; i <= 10; ++i ) {    str += 'Item ' + i + '<br />';}  container.innerHTML += str;



转载请注明出处:http://blog.csdn.net/horkychen

原文地址:http://www.ifadey.com/2011/05/javascript-mistakes-you-must-avoid/


Reference:你可能会犯的11个JavaScript错误


热点排行