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