关于逗号( , )在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 也是等价的

 

 

未完待续......

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值