关于逗号( , )在JS中的使用技巧

 

在变量声明中使用

 var a,b = 3;

我所理解的执行顺序为:

  1. b = 3 
  2. var a = underfind 
  3. var b = 3 
  4. var a = underfind; var b = 3 

Dom:  测试B是否为全局变量

function test(){
  var a,b = 3;
}
test();
b; // b is not defind

function test(){
  var a,b = 3;
  return function(){
     alert(b); // a = underfind
  }
}
test().call(null); // 3

在流程控制语句中

if(a = 3, true) { alert(a) } //  3 

if(a = 3, false) { alert(a) } // no
alert(a) // 3

在上面的例子中,程序先从左至右运行,但是if执行的条件却是根据第二个的boolan值执行,再看一个Dom

var a,b,c = 1;
if(c){  //method1
 b = 1;
 if(b){
   a = 1;
   if(a){
     alert();
   }
 }
}

if(c){  //method2
 if(b=1, c){
   if(a=1, b){
     alert();
   }
 }
}

这两行方法都是等价的,但是可读性却明显不是一个层次,在多重流程控制语句中使用,号是多么舒服

改变运行优先级

alert(3,4)  // 3
alert((3,4)) // 4

这怎么有种 && 短路求值的味道,取最后一个为true的值,即覆盖

在 return 中返回多个值

var a = 3
   ,b = 4;
console.log((function(){ return b = 5,b })()) // 等价于  b = 5; return b

相当于将两个单独的语句合并成一句,可读性更高

再找一个JQ源码上面的例子

( w.fn.init = function(){}).prototype = w.fn,q = w(r) // w.fn;q 也是等价的

未完待续......

发布了18 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41597258/article/details/80322536
今日推荐