`
Liu_wh
  • 浏览: 18631 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

对JS和一些小技巧总结

阅读更多
对JS和一些小技巧总结 欢迎大家提意见

1. 用 === 代替 ==

JavaScript里有两种不同的相等运算符:===|!== 和==|!=。相比之下,前者更值得推荐。请尽量使用前者。

“如果两个比较对象有着同样的类型和值,===返回true,!==返回false。”

– JavaScript: The Good Parts

不过,如果使用==和!=,在操作不同数据类型时, 你可能会遇到一些意想不到的问题。在进行相等判断前,JavaScript会试图将它们转换为字符串、数字或 Boolean量。

2. 避免使用Eval函数

Eval函数把一个字串作为参数,并把字串作为JavaScript语句执行,返回结果。

此函数不仅会降低你脚本的执行效率,而且还大大增加了安全风险,因为它赋予了作为文本的参数太大的权利。千万别用!

3. 不要使用快速写法

技术上说,你可以省略掉大部分花括弧和句尾分号,绝大多数浏览器都能正确执行以下语句:

1. if(someVariableExists)

2. x = false

不过,如果是这样的呢:

3. if(someVariableExists)

4. x = false

5. anotherFunctionCall();

你可能会认为它和下面的语句相等:

6. if(someVariableExists) {

7. x = false;

8. anotherFunctionCall();

9. }

不幸的是,事实并非如此。现实情况是它等价于:

10. if(someVariableExists) {

11. x = false;

12. }

13. anotherFunctionCall();

如您注意到的,再漂亮的缩进也不能代替这华丽的花括弧。在所有情况下都请写清楚花括号和句尾分号。在只有一行语句的时候能偶尔省略掉,虽然下这么做也是极度不被推荐的:

14. if(2 + 2 === 4) return ‘nicely done’;

多考虑下将来吧,孩子

假设,在将来的开发过程中,你需要为这个 if 语句添加更多的命令呢?到时候你还不是得把括号给加上?

4. 好好利用JS Lint

JSLint 是由 Douglas Crockford 编写的一个调试器。你只需要贴上你的代码,它就能快速为您扫描出任何明显的错误和问题。

“JSLint 扫描接收的代码。发现问题,描述问题,并给出其在源码中的大概位置。可发现的问题包括但不限于语法错误,虽然语法错误确实是最常见的。JSLint也会用约定俗成的习惯检查代码的格式化风格,以及结构错误。通过JSLint的扫描并不能保证你的程序就完全正确。它只是为您提供了额外一双发现错误的眼睛。”

– JSLint 文档

完成代码之前,把它放到JSLint里检查一下,快速消灭你的无心之过。

5. 在页面底部加载脚本

正如下图所示:

请记住—— 我们要千方百计保证客户端的页面载入速度尽可能的快。而脚本没载入完成,浏览器就没法加载页面的剩余部分。

如果你的JS文件只是添加一些额外功能——例如,为点击某链接绑定事件——那大可以等页面加载基本完成后再做。把JS文件放到页面最后,body的结束标签之前,这样做最好了。

更好的写法是

1. 《 p》现在你知道我最喜欢的玉米是哪种了。《 /p》

2. 《 script type=“text/javascript” src=“path/to/file.js”》《 /script》

3. 《 script type=“text/javascript” src=“path/to/anotherFile.js”》《 /script》

4. 《 /body》

5. 《 /html》

6. 在 For 语句外部声明变量

当需要执行冗长的for语句时,不要让JavaScript引擎每次都重复那些没有必要的操作。例如:

这样不好

6. for(var i = 0; i 《 someArray.length; i++) {

7. var container = document.getElementById(‘container’);

8. container.innerHtml += ‘my number: ’ + i;

9. console.log(i);

10. }

这段代码每次都重新定义数组长度,每次都在遍历DOM寻找container元素 —— 太傻了!

这样好多了

11. var container = document.getElementById(‘container’);

12. for(var i = 0, len = someArray.length; i 《 len; i++) {

13. container.innerHtml += ‘my number: ’ + i;

14. console.log(i);

15. }

7. 快速构建字串

要对一个数组或对象做循环操作时,不要老惦记着一表人才的for语句,拿点创意出来嘛!明明就还有很多更快的办法:

16. var arr = [‘item 1’, ‘item 2’, ‘item 3’, 。..];

17. var list = ‘《 ul》《 li》’ + arr.join(‘《 /li》《 li》’) + ‘《 /li》《 /ul》’;

“没那么多繁文缛节来烦你;你就信我一次好了(或者你也可以自己试一试)—— 这真的是迄今能找到的最快办法了!

用点土办法,也别管它背后究竟发生了什么抽象的东西,通常土办法都比那些优雅的办法要快捷得多!”

– James Padolsey, james.padolsey.com

8. 减少全局变量

“把你踩在全局的那些乱七八糟的脚印都归于一人名下,能显著降低与其他应用、小工具或JS库冲突的可能性。”

– Douglas Crockford

18. var name = ‘Jeffrey’;

19. var lastName = ‘Way’;

20. function doSomething() {。..}

21. console.log(name); // Jeffrey -- 也有可能是 window.name

更好的写法

22. var DudeNameSpace = {

23. name : ‘Jeffrey’,

24. lastName : ‘Way’,

25. doSomething : function() {。..}

26. }

27. console.log(DudeNameSpace.name); // Jeffrey

注意看,我们是如何戏剧化地把“乱七八糟的脚印”都归到“DudeNameSpace”这对象之下的。

9. 写好注释

可能一开始你会觉得并无必要,但相信我,你将来会主动想要尽可能写好代码的注释的。当你几个月后再回看某项目时,结果却发现很难想起当时写某句东西时脑子在想的什么了,是不是很让人沮丧呢?或者,如果有同事要修订你的代码呢?一定,一定要为你代码里的重要部分加上注释。

1. // 遍历数组,输出各自名称

2. for(var i = 0, len = array.length; i 《 len; i++) {

3. console.log(array[i]);

4. }

10. 试试渐进增强

一定要记得为未启用JavaScript的情况提供替代方案。大家可能会认为,“大部分我的访客都启用了JavaScript的,我才不用担心”。这样的话,你可就大错特错了!

你有没有试过看看禁用JavaScript后你那漂亮的滑动器都成啥样了?(你可以下载 Web Developer ToolBar 轻松完成这项任务。)禁用之后你的网站可能就彻底失去了可用性!经验之谈:开发初期总是按照没有JavaScript来设计你的网站,之后再进行渐进地功能增强,小心翼翼地改变你地布局。

11. 不要传递字串给 “setInterval” 或 “setTimeout”

看看下面的代码:

5. setInterval(

6. “document.getElementById(‘container’).innerHTML += ‘My new number: ’ + i”, 3000

7. );

不仅执行不高效,而且和 eval 函数有着同样的高风险。千万不要把字串传递给 setInterval 和 setTimeout。恰当的做法是,传递一个函数名:

8. setInterval(someFunction, 3000);

12. 不要使用with语句

初识之下,“with”语句似乎还挺好用的。它用于设置代码在特定对象中的作用域。其基本用法是提供深入到对象中处理元素的快速写法。例如:

9. with (being.person.man.bodyparts) {

10. arms = true;

11. legs = true;

12. }

– 等价于 —

13. being.person.man.bodyparts.arms = true;

14. being.person.man.bodyparts.legs= true;

不幸的是,测试表明,若你要为对象插入新成员,with的表现非常糟糕,它的执行速度非常缓慢。替代方案是声明一个变量:

15. var o = being.person.man.bodyparts;

16. o.arms = true;

17. o.legs = true;

13. 使用 {},而不用New Object()

在JavaScript有多种方式能新建对象。最传统的方法是 new 语句,如下:

18. var o = new Object();

19. o.name = ‘Benhuoer’;

20. o.lastName = ‘Yang’;

21. o.someFunction = function() {

22. console.log(this.name);

23. }

不过,这一方法读起来却比较糟糕。我强烈建议你采用下面这种在文字样式上更为强健的写法:

更好的写法

24. var o = {

25. name: ‘Jeffrey’,

26. lastName = ‘Way’,

27. someFunction : function() {

28. console.log(this.name);

29. }

30. };

注意,如果你想新建一个空对象,用 {} 就能行:

31. var o = {};

“对象字面符(Objects literals)帮助我们写出支持很多特性,同时又关联性强、简明直接的代码。没必要直接调用新建语句,然后再费心维护声明变量和传递变量的语句之间的正确顺序,等等。” – dyn-web.com

14. 使用[],而不用New Array()

新建数组时的同类型运用。

行得通的写法

32. var a = new Array();

33. a[0] = “Joe”;

34. a[1] = ‘Plumber’;

更好的写法

35. var a = [‘Joe’,‘Plumber’];

“在JavaScript编程中经常遇到的一个错误是,该用数组时却用了对象,该用对象时却用了数组。规则其实很简单:当属性名是小的连续整数时,你应该使用数组。其他情况,使用对象。” – Douglas Crockford

15. 一长列变量声明?别写那么多var,用逗号吧

1. var someItem = ‘some string’;

2. var anotherItem = ‘another string’;

3. var oneMoreItem = ‘one more string’;

更好的写法

4. var someItem = ‘some string’,

5. anotherItem = ‘another string’,

6. oneMoreItem = ‘one more string’;

…不言自明。我不知道这样做能否提升代码执行速度,但是确实让你的代码干净许多。

17. 千万千万记得写分号

大部分浏览器都允许你不写句尾分号:

7. var someItem = ‘some string’

8. function doSomething() {

9. return ‘something’

10. }

之前已经说过,这样做会造成潜在的更大、更难以发现的问题:

更好的写法

11. var someItem = ‘some string’;

12. function doSomething() {

13. return ‘something’;

14. }

18. “For in” 语句

遍历对象时,你可能会发现你还需要获取方法函数。所以遇到这种情况时,请一定记得给你的代码包一层 if 语句,用以过滤信息。

15. for(key in object) {

16. if(object.hasOwnProperty(key) {

17. 。..这里做点什么。..

18. }

19. }

19. 使用Firebug的“Timer”功能优化你的代码

想要轻松地快速了解某项操作的用时吗?使用Firebug的timer功能来记录结果好了。

20. function TimeTracker(){

21. console.time(“MyTimer”);

22. for(x=5000; x 》 0; x--){}

23. console.timeEnd(“MyTimer”);

24. }

20. 读,读,读……

虽然我是Web开发博客的超级粉丝,但吃饭和睡觉前除了看书好像也别无选择~ 在你的床头柜上摆一本Web开发的好书吧!

21. 自决的函数

相比于调用函数,让函数在页面载入或者某一父函数被调用时自动执行,是十分简单方便的做法。你只需要把你的函数包在父辈之内,然后添上一个额外的括号,本质上这括号就触发了你定义的函数(了解更多)。

25. (function doSomething() {

26. return {

27. name: ‘jeff’,

28. lastName: ‘way’

29. };

30. })();

22. 原生 JavaScript 总是会比使用代码库来的快

诸如jQuery和Mootools这样的JavaScript库,能为你写代码的过程省下不少时间——尤其是当需要 AJAX 操作时。不过你可得记住,只要你的代码写得恰当,原生JavaScript总是会比利用代码库的写法执行得快一些。

jQuery的“each” 方法对于循环操作十分便利,但是使用原生态的for语句总归会快很多。

23. Crockford 的 JSON.Parse

尽管 JavaScript 2会内建JSON处理器,但写这篇文章之时,我们还是需要自己实现。Douglas Crockford,JSON的创建者,已经为我们创作出能直接使用的处理器了。您可以在这里下载。

导入这段代码,你就能新建 JSON 全局对象,然后处理你的 .json 文件。

31. var response = JSON.parse(xhr.responseText);

32. var container = document.getElementById(‘container’);

33. for(var i = 0, len = response.length; i 《 len; i++) {

34. container.innerHTML += ‘《 li》’ + response[i].name + ‘ : ’ + response[i].email + ‘《 /li》’;

35. }

24. 移去“Language”

很多年前,language还是每段script标签必备属性:

36. 《 script type=“text/javascript” language=“javascript”》

37. 。..

38. 《 /script》




分享到:
评论

相关推荐

    Javascript 实用小技巧

    在本篇标题为“Javascript实用小技巧”的文章中,作者分享了一系列实用的JavaScript代码片段,旨在帮助学习JavaScript的人士掌握一些提高编程效率的技巧。文章内容涉及了JavaScript的Function对象的apply和call方法...

    Javascript小技巧之生成html元素.docx

    7. **JavaScript编程的10个有用小技巧**和**12个特别有用的JavaScript小技巧【推举】**:这两篇文章分别分享了10个和12个实用的JavaScript编程技巧,是进阶学习的好资源。 总的来说,掌握生成HTML元素的技巧对...

    web 笔记,包含JavaScript、CSS、HTML 等;各种前端开发的小技巧及总结.zip

    各种前端开发的小技巧及总结. web 笔记,记录自己学习前端的历程,记录自己学习的代码,包含JavaScript、CSS、HTML 等;各种前端开发的小技巧及总结. web 笔记,记录自己学习前端的历程,记录自己学习的代码,包含...

    JSP实用技巧集合,jsp编程的一些小技巧总结

    jsp编程的一些小技巧总结,绝对实用。包括JSP编程中常用的js技术。 1.JSP编程中常用的js技术 2. 在下拉列表框里选择一个值后跳出新窗口? 3. 在JSP中启动execl? 4. 两级下拉列表框联动菜单? 5. java中如何把一个目录...

    几百个javascript常用小技巧总结

    以下是一些JavaScript的常用小技巧和知识点的总结,帮助你提升编程效率和代码质量。 1. **变量声明与作用域** - 使用`let`和`const`代替`var`,避免变量提升和作用域污染。 - `let`允许块级作用域,而`const`用于...

    Java js小技巧

    本文将深入探讨“Java js小技巧”这一主题,分享一些实用的编程技巧,帮助开发者提升效率和代码质量。 首先,我们来看Java。Java是一种强类型、面向对象的编程语言,被广泛用于企业级应用开发、Android移动应用以及...

    javaScript小技巧。

    根据提供的文件内容,我们可以总结出以下几个JavaScript小技巧及相关知识点: ### 1. 引入外部JavaScript文件 在HTML文档中,可以通过`<script>`标签引入外部JavaScript文件来执行脚本代码。例如: ```html ...

    JavaScript小技巧整理篇(非常全).pdf

    ### JavaScript小技巧整理篇知识点详述 #### 一、引言 本文档旨在总结一系列JavaScript编程中的实用技巧,涵盖从基本操作到高级功能的应用。这些技巧不仅有助于提升开发效率,还能帮助开发者更好地理解和掌握...

    javascript小技巧

    javascript小技巧汇总,很实用。

    Javascript常用小技巧汇总

    JavaScript是一种广泛应用于Web开发的脚本...总之,熟练掌握这些JavaScript小技巧能帮助开发者写出更高效、更简洁的代码。在实际开发中,应该根据项目需求和团队规范灵活运用这些技巧,同时保持代码的可读性和维护性。

    200个js技巧汇总

    这篇"200个js技巧汇总"资源提供了丰富的JavaScript知识,旨在帮助开发者提升技能,解决实际问题。下面,我们将深入探讨这些技巧,从基础到进阶,全面解析JavaScript的各个方面。 1. **基本语法与数据类型**:...

    前端开发实用的js正则表达式小技巧总结.docx

    在本文中,我们将深入探讨一些实用的JavaScript正则表达式小技巧,包括模式匹配、非捕获括号、先行断言、后行断言、正向否定查找、反向否定查找、字符集合、反向字符集合、词边界和非单词边界匹配。 1. **模式匹配...

    Jquery使用小技巧汇总

    以下是一些实用的JQuery使用小技巧,涵盖了多个方面,包括用户交互、页面行为、兼容性处理等。 1. **禁止右键点击**:通过监听`contextmenu`事件并返回`false`,可以阻止用户在页面上右键点击。 ```javascript $...

    网页制作小技巧总结.pdf

    文档标题和描述中提到的“网页制作小技巧总结.pdf”表明本篇内容是关于网页设计和开发过程中的一些技巧和心得的汇总,这些技巧可能涵盖了代码编写、页面布局、交互功能实现等多个方面。接下来,我会详细解释这些内容...

    2009-05-21一些WEB小技巧总结.txt

    根据给定文件的信息,我们可以总结出以下几个主要的Web小技巧知识点: ### 1. 关闭浏览器窗口时避免弹窗提示 在Web开发中,有时我们需要让网页能够自行关闭,但默认情况下,在某些浏览器中(尤其是IE6和IE7),当...

    JS网页常用小技巧

    ### JS网页常用小技巧知识点详解 #### 一、屏蔽鼠标右键点击 **知识点:** 使用`oncontextmenu`事件可以阻止默认上下文菜单(即鼠标右键菜单)的显示。 ```html ;"> ``` 或者在特定元素上使用: ```html ;"> 不可...

    js实现的小技巧和功能

    根据提供的文件信息,我们可以总结出以下几个JavaScript相关的知识点与技巧: ### 1. 文本复制与粘贴技巧 在示例代码中,通过`window.clipboardData`对象实现了文本的复制与粘贴操作。具体实现步骤如下: - **保存...

    网页常用小技巧JavaScript

    本文将围绕“网页常用小技巧JavaScript”的主题,深度解析并拓展其描述中的关键知识点,帮助读者更好地理解和运用这些技巧。 ### 一、阻止右键菜单和文本选取 1. **阻止右键菜单**:`oncontextmenu="window.event....

    JavaScript小技巧全集.doc

    本文将探讨几个实用的JavaScript小技巧,包括鼠标控制、显示日期和时间,以及利用历史记录和前进功能。 首先,让我们来看如何用鼠标控制Web页面。在JavaScript中,`onMouseOver`事件是一个非常有用的特性,允许我们...

Global site tag (gtag.js) - Google Analytics