?今天看到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
?
?
?
?