JS编程建议——17:块标志并非多余

建议17:块标志并非多余
if、while、do或for语句可以接受一个括在大括号中的代码块,也可以接受单行语句。单行语句的形式是另一种“带刺的玫瑰”。它的好处是可以节省两个字节,但是它模糊了程序的结构,在随后的操作中可能产生问题,例如:

  1. if(0)
  2. if(1)
  3. alert(1);
  4. else
  5. alert(0);
    如果不借助代码版式,很难明白以上代码的逻辑结构。而JavaScript解释器会根据if关键字与else关键字最近原则按如下结构进行解释。
  6. if(0)
  7. if(1)
  8. alert(1);
  9. else
  10. alert(0);
    如果其中子结构中包含多行语句,这个问题就比较麻烦了,甚至会出现执行错误的情况。因此,为了避免嵌套的条件结构发生混乱,应该使用大括号语法来分隔代码块,例如:
  11. if(0) {
  12. if(1) {
  13. alert(1);
  14. }
  15. }
  16. else{
  17. alert(0);
  18. }
    严格遵循规范,并始终使用代码块,会使代码更容易理解。
时间: 2024-11-05 20:26:57

JS编程建议——17:块标志并非多余的相关文章

JS编程建议——67:套用函数

建议67:套用函数套用是JavaScript函数一个很有趣的应用.所谓套用就是将函数与传递给它的参数相结合,产生一个新的函数.在函数式编程中,函数本身也是一个值,这种特性允许用户以有趣的方式去操作函数值.例如,在下面代码中定义一个add()函数,该函数能够返回一个新的函数,并把参数值传递给这个新函数,从而实现连加操作.var add = function(n){ return function(m){ return n+m; } }document.writeln(add(2)(3)); //5

JS编程建议——3:减少全局变量污染

建议3:减少全局变量污染定义全局变量有3种方式:在任何函数外面直接执行var语句. var f = 'value'; 直接添加一个属性到全局对象上.全局对象是所有全局变量的容器.在Web浏览器中,全局对象名为window. window.f = 'value'; 直接使用未经声明的变量,以这种方式定义的全局变量被称为隐式的全局变量. f = 'value'; 为方便初学者在使用前无须声明变量而有意设计了隐式的全局变量,然而不幸的是忘记声明变量成了一个非常普遍的现象.JavaScript的策略是让

JS编程建议——6:正确处理JavaScript特殊值(1)

建议6:正确处理JavaScript特殊值(1)1.正确使用NaN和InfinityNaN是IEEE 754中定义的一个特殊的数量值.它不表示一个数字,尽管下面的表达式返回的是true. typeof NaN === 'number' // true 该值可能会在试图将非数字形式的字符串转换为数字时产生,例如: '0' // 0 'oops' // NaN 如果NaN是数学运算中的一个运算数,那么它与其他运算数的运算结果就会是NaN.如果有一个表达式产生出NaN的结果,那么至少其中一个运算数是N

JS编程建议——8:谨慎使用运算符(1)

建议8:谨慎使用运算符(1)1.用===,而不用==JavaScript有两组相等运算符:===和!==.==和!=.===和!==这一组运算符会按照期望的方式工作.如果两个运算数类型一致且拥有相同的值,那么===返回true,而!==返回false.==和!=只有在两个运算数类型一致时才会做出正确的判断,如果两个运算数是不同的类型,会试图强制转换运算数的类型.转换的规则复杂且难以记忆,具体规则如下: '' == '0' // false 0 == '' // true 0 == '0' //

JS编程建议——13:养成优化表达式的思维方式(1)

建议13:养成优化表达式的思维方式(1)对同一个表达式稍加改动就会打乱表达式的逻辑运算顺序,因此我们应该学会优化表达式的结构,不改变表达式的运算顺序和结果即可提高代码的可读性.1.第一种方式--加小括号例如,面对下面这个复杂表达式,可能被&&和||的优先级所迷惑. (a + b > c && a – b < c || a > b > c) 不过,如果进行如下优化,逻辑运算的顺序就会非常清晰了. ((a + b > c) && (

JS编程建议——29:准确使用循环体(1)

建议29:准确使用循环体(1)1.选择正确的循环体在大多数编程语言中,代码执行时间多数消耗在循环的执行上.在一系列编程模式中,循环是最常用的模式之一,因此也是提高性能必须关注的地方之一.理解JavaScript 中循环对性能的影响至关重要,因为死循环或长时间运行的循环会严重影响用户体验.JavaScript定义了4种类型的循环:第一种循环是标准的for循环,与C语言使用同样的语法: for (var i=0; i < 10; i++){ //循环体 } for循环是最常用的循环结构,它由4部分组

JS编程建议——36:警惕字符串连接操作(1)

建议36:警惕字符串连接操作(1)字符串连接表现出惊人的"性能紧张".一个任务通过一个循环向字符串末尾不断地添加内容,以创建一个字符串.例如,创建一个HTML 表或一个XML 文档.此类处理在一些浏览器上表现得非常糟糕.当连接少量字符串时,这些问题都可以忽略,临时使用可选择最熟悉的操作.当合并字符串的长度和数量增加之后,有些函数开始显示出"威力".(1)+.+=+.+=运算符提供了连接字符串的最简单方法.除IE 7及其以前版本外,当前所有浏览器都对这种方法优化得很好

JS编程建议——55:不要拘泥于数字下标

建议55:不要拘泥于数字下标数组下标默认为大于或等于0的整数,不过JavaScript允许数组下标可以为任意表达式,甚至为任意类型数据.(1)文本下标为数组下标指定负值:var a = []; // 定义空数组直接量a[-1] = 1; // 为下标为-1的元素赋值很显然,上面的用法是非法的,因为这不符合语法规范.使用length属性检测,返回值为0,说明数组并没有增加长度,这是正确的,也很正常.但是,使用下面的方法可以读取该元素的值:alert(a.length); // 0,说明数组长度没有

JS编程建议——50:正确检测数组类型

建议50:正确检测数组类型由于数组和对象的数据同源性,导致在JavaScript编程中经常会出现:在必须使用数组时使用了对象,或者在必须使用对象时使用了数组.选用数组或对象的规则很简单:当属性名是小而连续的整数时,应该使用数组,或者当对属性的位置和排列顺序有要求时,应该使用数组.否则,使用对象.JavaScript语言对数组和对象的区别是混乱的.typeof运算符检测数组的类型是"object",这没有什么意义,因此在正确检测数组和对象方面JavaScript没有提供很多的机制.这时可