Javascript 中的逗号操作符

 今天看到Javascript传说中的逗号操作符,实际上我们平时也很难遇到特殊的用法和语法结构,如果面试的时候遇到就傻眼了的确有点刁钻,适合技术狂人们去深造。

 

运算规则:

逗号运算符,它将先计算左边的参数,再计算右边的参数值。然后返回最右边参数的值。

 

<script>
var a = 10, b = 20;
function foo(){ return a++, b++, 30; }
var c = foo();
alert(a); // 返回11
alert(b); // 返回21
alert(c); // 返回30
</script>

 

优先级:

逗号运算符在JavaScript在的优先级是最低的,比函数调用和赋值运算符还低。(注:函数调用确实是函数调用运算符

<script>
alert(10*2, 10*3); // 输出20
</script>

 

 

根据逗号运算符的原理来解释的话,那应该是输出30才对,但是注意:逗号运算符在JavaScript在的优先级是最低的。按照平时的思维方式也应该返回20。

如果要输出30应该这样写:

<script>
alert( (10*2, 10*3) ); // 输出30
</script>

 

如果需要深入研究大家可以做做下面的题(适合技术狂人):

来自 http://www.easyui.info/archives/1527.html

 

1. var a = (1,5 - 1) * 2;a的值为()    
   
   A、0.999999999  B、1  C、2  D、8  E、0.5    
   
2. var b = 10,c = (    
                20,    
                function (x) { return x + 100},    
                function () { return arguments[0]}    
              );    
   
   var a = b + c({x: 10}).x;    
   a的值为()    
   
   A、30、10  B、20  C、10  D、30、110  E、NaN 、10    
3. function f(x, y) {    
       x = 10;    
       alert(    
         arguments[0],    
         arguments[1]    
       );    
   }    
   
   f();结果为    

   A、null,undefined  B、10  C、undefined  D、0, NaN  E、 "undefined"   
   
4. var f = (function f(){ return "1"; }, function g(){ return 2; })();    
   typeof f;的值为()    
       
   A、"string" B、"number" C、"function" D、"undefined"   
   
5. var x = 10;    
   var foo = {    
       x: 20,    
       bar: function ()    
       {    
           var x = 30;    
           return this.x;    
       }    
   };    
   
   alert(    
     foo.bar(),    
     (foo.bar)(),    
     (foo.bar = foo.bar)(),    
     (foo.bar, foo.bar)()    
   );    
结果为:    
A、15 B、20  C、30 D、10   

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值