javascript使用注意的问题

Posted yongtao_liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript使用注意的问题相关的知识,希望对你有一定的参考价值。

1、在对大量数据作处理时,尽量避免循环嵌套。
因为循环嵌套的处理时间会随着数据量的增加成指数级增长,所以应尽量避免。遇到这种情况,如果没有更好的办法,一般采取的策略是以空间换时间,即建立一张二级循环数据的Hash映射表。当然,还要具体情况具体分析。还有一点要说的是,某些方法本身就是一个循环体,如Array.sort()(该方法应该是用了两层循环实现),在使用的时候需加注意。
2、尽量避免递归调用。
递归调用的优点是代码简洁,实现简单,而它的缺点很重要,说明如下:
(1)函数栈的大小会随着递归层次成线性增长,而函数栈是有上限值的,当递归达到一定层数后函数栈就会溢出,从而导致程序出错;
(2)每递归一层都会增加额外的压栈和出栈操作,即函数调用过程中的保存现场和恢复现场。
所以,应尽量避免递归调用。
3、关于模块文件的作用域隔离。
Node在编译javascript模块文件的时候,已经对其内容进行了头尾包装,如下:

(function(exports, require, module, __filename, __dirname)
  \\\\你的JavaScript文件代码
);

从而使每个模块文件之间进行了作用域隔离。所以,当你编写NodeJs模块文件的时候,不需要自己再加一层作用域隔离封装了。如下面的代码格式,只会额外增加一层函数调用,是不推荐的:

(function()
  ... ...
)();

4、数组和对象不要混用
下面是错误代码的示例:

    var o = [];
 o['name'] = 'LiMing';
  数组和对象混用可能会导致不可预知的错误。
var o = [];
o['name'] = 'LiMing';
var s = JSON.stringify(o);

本以为对象o的name属性会在JSON串中,结果就是没有。当时我也很奇怪,但我有预感到是数组和对象混用的问题,试了一下,果然是它的问题。后来在ECMA规范中查到,数组在序列化时是按JA规则进行的。所以,要养成一个好的编程习惯,正确使用数组和对象,不要混用。

以上是关于javascript使用注意的问题的主要内容,如果未能解决你的问题,请参考以下文章

读《JavaScript语言精粹》笔记

JavaScript注意的地方

JavaScript循环 while/do while/for的使用

JavaScript循环和数组常用操作

[ Javascript ] 内存泄露以及循环引用解析

javaScript循环