第一:关于匿名函数的使用

要避免全局变量泛滥, 可以考虑使用匿名函数, 把不需要在外部访问的变量或者函数限制在一个比较小的范围内。

例如以下代码:

  1. <script>
  2. function func1(){
  3. var list = ["a", "b", "c"];
  4. for(var i = 0; i < list.length; i++){
  5. //..
  6. };
  7. }
  8. func1(); // 自动运行
  9. </script>

上述代码的作用是在页面加载的时候自动执行某些操作, 并不需要被外部调用, 但是它执行过后却留下了一个全局的函数。

像这种情况, 非常有必要使用匿名函数:

如下述代码所示:

  1. <script>
  2. (function func1(){
  3. var list = ["a", "b", "c"];
  4. for(var i = 0; i < list.length; i++){
  5. //..
  6. };
  7. })(); // 自动运行
  8. </script>

匿名函数的书写格式(不带参数的情况下):

  1. (function(){
  2. // 代码块
  3. })();

如果后面需要添加参数的话,则这样书写:

  1. (function(arg1, arg2, argN){
  2. //..
  3. })(arg1, arg2, argN);

第二:有关命名空间的使用规范:

命名空间可以有效减少全局变量的使用,是个很不错的规范JS代码的方式,在JS中命名空间需要进行如下操作:

“对象-属性”:

  1. window.com = {}
  2. window.com.bytter = {}
  3. window.com.bytter.hello = function(){
  4. alert("hello");
  5. }

那么什么情况下才会使用到命名空间呢?

如果您需要给某个已经存在的页面添加一些功能,有可能需要添加好多个函数,而且正好那个页面当中已经存在了好多的全局变量和函数,甚至还存在某些函数和你要新增加的函数同名,这时我们就可以使用命名空间了:

你创建一个命名空间, 把你的新函数都放在那个命名空间之下, 就可以了:

  1. <button type="button" onclick="pg.check.userAcc()">检查用户名</button>
  2. <button type="button" onclick="pg.check.userAcc()">检查帐号</button>
  3. <script>
  4. window.pg = {}
  5. window.pg.check = {
  6. // 检查用户名
  7. userName: function(){
  8. //..
  9. },
  10. // 检查帐号
  11. userAcc: function(){
  12. //..
  13. }
  14. };
  15. </script>

第三:如何保证多人书写的JS代码互不干扰

我们学习了匿名函数和命名空间,掌握了它们的正确使用方法,接下来我们就可以做到保证JS代码之间互不干扰:

我们把一个页面中自己维护的代码与别人维护的代码或者系统自带的代码分隔开来,做到与外部代码的耦合降低到最小。

  1. <script>
  2. // 页面命名空间
  3. window.pg = {}
  4. //命名空间的使用
  5. // 检查用户信息
  6. // 作者:张三
  7. // 最后更新: 2012.12.31
  8. (function(){
  9. // 私有变量
  10. var a, b, c;
  11. // 检查用户信息的相关方法
  12. window.pg.check = {
  13. // 检查用户名
  14. userName: function(){
  15. //..
  16. },
  17. // 检查帐号
  18. userAcc: function(){
  19. //..
  20. }
  21. };
  22. })(); // end 张三的代码
  23. //匿名函数的使用
  24. // xxx功能
  25. // 作者:李四
  26. // 最后更新: 2012.1.1
  27. (function(){
  28. window.pg.xxx = {
  29. //..
  30. }
  31. })(); // end 李四的代码
  32. </script>

第四:使得变量声明美观易读

1、变量必须在使用前用var进行声明;

2、变量的声明应该放在代码块或者函数的头部;

3、可在一行内声明多个变量,尽可能添加上注释信息

  1. // 声明变量 银行名称, 银行帐号
  2. var type, acc;
  3. // 声明变量 银行名称, 银行帐号
  4. var type = "中国银行", acc = "xxxxxx";
  5. var type = "中国银行", // 银行名称
  6. acc = "xxxxxx"; // 银行帐号
  1. 尽量使用易于理解的变量名,如:
  2. var bankType = "中国银行",
  3. bankAccount = "xxxxxx";

第五:函数和变量的命名

普通变量名和函数名采用"小驼峰式命名法", 如:firstName、lastName

作为构造函数的函数采用"大驼峰式命名法", 如以下代码所示:

  1. var Person = function(){
  2. //..
  3. }
  4. var me = new Person();
  5. 常量用大写和下划线表示,如:
  6. var ROOT_PATH = "/v10/";
 

第六:正确地使用分号,可保证JS正常压缩

尽量做到每条语句使用分号结尾(特别是需要进行压缩的js,因为省略分号常常会导致压缩失败);

第七:有关数组的定义

尽量使用简便的方式进行数组的定义:

  1. // 比较好的定义方法
  2. var list = [1, 2, 3];
  3. // 不好的定义方法
  4. var list = new Array();
  5. list[0] = 1;
  6. list[1] = 2;
  7. list[2] = 3;
 

摘自:iteye技术博客[有删改]

如何才能优雅地书写JS代码的更多相关文章

  1. 几个你所不知道的技巧助你写出更优雅的vue.js代码

    1. watch 与 computed 的巧妙结合 如上图,一个简单的列表页面. 你可能会这么做: created(){ this.fetchData() }, watch: { keyword(){ ...

  2. 优雅的敲JS代码的几个原则

    一.条件语句        1,使用 Array.includes 来处理多重 || 条件          // ----- 一般 ------ if (fruit == 'apple' || fr ...

  3. 优雅的vue.js

    优雅的vue.js代码 https://www.cnblogs.com/zhengrunlin/p/9164951.html watch 与 computed 的巧妙结合 如上图,一个简单的列表页面. ...

  4. 淘系工程师讲解的使用Spring特性优雅书写业务代码

    使用Spring特性优雅书写业务代码   大家在日常业务开发工作中相信多多少少遇到过下面这样的几个场景: 当某一个特定事件或动作发生以后,需要执行很多联动动作,如果串行去执行的话太耗时,如果引入消息中 ...

  5. 如何在一个网站或者一个页面,去书写你的JS代码

    // JavaScript Document //如何在一个网站或者一个页面,去书写你的JS代码: //1.js的分层(功能) : jquery(tools) 组件(ui) 应用(app), mvc( ...

  6. JS代码中加上alert才能正常显示效果

    模拟一个生成验证码的效果,发现JS代码中加上alert可以正常刷新,没有alert时图片就会丢失,找到解决方法,但是还不是很明白,先记录下来. 生成验证码的servlet代码如下: package s ...

  7. webstorm的live templates快速编辑功能,让你的css JS代码书写速度飞起来

    前言: Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码, 大大提高了HTML/CSS代码编写的速度,比如下面 ...

  8. 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!【转载+整理】

    原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructu ...

  9. 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!

    原文地址 迁移到:http://www.bdata-cap.com/newsinfo/1741515.html 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和f ...

随机推荐

  1. HDU 2317 Nasty Hacks

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  2. php闭包实例

    php闭包函数,一个典型的实例 function getMoney() { $rmb = 1; $dollar = 6; $func = function($dollar) use (&$rm ...

  3. HDU 1022 Train Problem I (数据结构 —— 栈)

    Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot o ...

  4. nodejs什么值得买自动签到自动评论定时任务

    本项目是基于nodejs开发,实现的功能是,什么值得买自动签到,自动评论功能,自动发邮件,支持多人多账号运行 目的是为了,解放双手,轻松获取什么值得买的经验和积分,得到更高的等级,从而突破很会员等级限 ...

  5. monitor and move the log content to our big data system

    Apache Flume HDFS Sink Tutorial | HowToProgram https://howtoprogram.xyz/2016/08/01/apache-flume-hdfs ...

  6. Delphi ActiveForm发布全攻略

    论坛上很多朋友(也包括我)提到ActiveForm的发布问题,都没有得到很好的解决.下面是本人开发ActiveForm的一点经验,拿出来跟大家分享,开发环境为 Win2000Server,IIS5.0 ...

  7. hdu 1400 Mondriaan's Dream 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1400 题目意思:给出一个h * w的 大 矩形,需要用 1 * 2 的砖块去填充这个大矩形,问填充的方 ...

  8. 书写优雅的shell脚本(一)- if语句

    使用unix/linux的程序人员几乎都写过shell脚本,但这其中很多人都是为了完成功能而在网上找代码段,这样写出来的shell脚本在功能方面当然是没有什么问题,但是这样的方式不能写出优雅的shel ...

  9. 【Codeforces 632D】 Longest Subsequence

    [题目链接] 点击打开链接 [算法] 设取的所有数都是k的约数,则这些数的lcm必然不大于k. 对于[1, m]中的每个数,统计a中有多少个数是它的约数即可. [代码] #include<bit ...

  10. 小K的农场(差分约束)

    题目大意 n个点 m条描述 农场 a 比农场 b 至少多种植了 c 个单位的作物. 农场 a 比农场 b 至多多种植了 c 个单位的作物. 农场 a 与农场 b 种植的作物数一样多. 题解 差分约束裸 ...