JavaScript 逗号运算符

   思考  

关于逗号选择器并不是很重要的一个知识点,但是我在写这篇博客查阅资料的时候发现一个很奇怪的问题。

在《JavaScript高级程序设计》这本书中说:逗号选择器多用于声明多个变量,除此之外还可以用于赋值。

在 MDN中并不认为 var 语句中的逗号属于逗号操作符,而将其看作是 var 语句中的特殊符号。

姑且认为var中的逗号可以理解为逗号分隔,不是逗号运算符。

使用逗号运算符可以在一条语句中执行多个操作。

在《JavaScript高级程序设计》这本书中认为逗号操作符,多用于声明多个变量,例如:

var a = 1 , b = 2 , c=3;

逗号操作符还可以用来赋值,操作符会返回表达式的最后一项,例如:

var aa=(5,4,3,2,1,0)

MDN

逗号操作符 对它的每个操作数求值(从左到右),并返回最后一个操作数的值

语法:

表达式1,表达式2,表达式3……

表达式运算符和操作数(或是变量)的组合就是表达式,

  使用逗号运算符是为了把几个表达式放在一起。整个逗号表达式的值是系列中最后一个表达式的值。

  从本质上讲,逗号的作用是将一系列运算按照顺序执行。最右边的那个表达式的值将会作为整个逗号表达式的值,其他表达式的值将会被丢弃。

当想要在放置一个表达式的位置包含多个表达式时,可以使用逗号操作符。这个操作符最常用的一种情况是:for 循环中提供多个参数。

实例:

下面的代码使用逗号操作符第一次递增/递减两个变量。

需要注意的是,var 语句中的逗号 不是 逗号运算符,因为它不是存在于一个表达式中的。

尽管从实际效果来看,var语句中的逗号和逗号运算符的表现相似。但是确切地说,它是 var 语句中的特殊符号,用于把多个变量组合成一个。

for(var i=0,j=9;i<j;i++,j--){
//for循环中的第一个逗号是var语句的一部分
//第2个操作符是逗号操作符
//将两个表达式 i++ 和 j-- 放在一起
   document.write(i+j);
}

    处理后返回     

另一个使用逗号操作符的例子是在返回值之前处理一些操作。

例如下面的代码,只有最后一个表达式被返回,其他的都是被求值。

function fun(){
   var i = 0;
   return(i+=1,i);
}
fun() //只有最后一个表达式会被返回,其他的都是求值

最后结果返回的是1,之所以返回的是1,是因为逗号运算符会返回的是最后一个表达式,所谓表达式即为运算符和操作数(或是变量)

i += 1属于表达式,所以return 的结果是1。

参考文章:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comma_Operator

《JavaScript高级程序设计》

原文地址:https://www.cnblogs.com/nyw1983/p/12236852.html

时间: 2024-08-30 13:10:20

JavaScript 逗号运算符的相关文章

JavaScript中逗号运算符和this

遇到一道题目,写出下面的输出: 结果如下: 第一个是child's name没有问题,第二个指定的也是child,依然是child's name,第三个和第二个实际上是一样的,(parentObj.child=parentObj.child)相当于(parentObj.child),都是函数名,第四个又是什么鬼呢. 逗号运算符是很少见的,查了资料才知道,使用逗号运算符时,先计算左操作数的值,再计算右操作数的值,最后返回右操作数的值.因此,(parentObj.child,parentObj.ch

JavaScript中的逗号运算符

JavaScript中的逗号运算符(,)是顺序执行两个表达式. expression1, expression2 其中,expression1是任何表达式,expression2是任何表达式. 逗号运算符(,)导致按从

javascript学习笔记---ECMAScript运算符(乘性,加性,关系,等性,关系,赋值,逗号运算符)

乘性:乘法,除法,取模,(特殊数字[Infinity,-Infinity,NaN,0]需要注意) 加性:加减法(同样特殊数字注意) 关系运算符执行的是比较运算.每个关系运算符都返回一个布尔值. 常规比较:数字与数字,字符串与字符串(按字符代码数值比较) 数字和字符串比较:先将字符串转为数字再比较 ECMAScript 提供了两套等性运算符:等号和非等号用于处理原始值,全等号和非全等号用于处理对象. 等号和非等号 在 ECMAScript 中,等号由双等号(==)表示,当且仅当两个运算数相等时,它

Javascript基础--运算符与表达式

一.运算符 1.运算符分类: 按功能:算术运算符:+.-.*./.%.++.-- 例:12+12-11+5*6+20/5+5%2+(5%-2)+(-5++2)+(a++)+(++a)+(--a)+(a--).注意取模运算符中返回结果值和第一个参数正负相关和第二个参数无关. 赋值运算符:= 字符串运算符:+.拼接运算符 逻辑运算符:&&(一非全非),||(一真全真全真) 关系运算符:>.>=.<.<=.==.!=.===.!== 逐位运算符: 其他运算符:条件运算符

JavaScript 逗号操作符

让我们从一个有趣的微博开始吧. 末尾的c是优先级最低的逗号操作符.逗号操作符是操作符优先级的最后一行,并且很少有文章记录,它隐藏着它的锋芒.它可能不是JavaScript强势操作符,但是我喜欢它.它简单.优雅并且你应该让它成为你的朋友.所以,我们开始吧--你需要更多了解JavaScript这个害羞英雄. 它是做什么的? 逗号操作符评估它的操作数(从左到右)并返回第二个操作数的值.(MDC) var a = (7, 5); a; //5 var x, y, z; x = (y=1, z=4); x

JS逗号运算符的用法详解

逗号运算符的用法详解 注意: 一.由于目前正在功读JavaScript技术,所以这里拿JavaScript为例.你可以自己在PHP中试试. 二.JavaScript语法比较复杂,因此拿JavaScript做举例. 最近重新阅读JavaScript权威指南这本书,应该说很认真的阅读,于是便想把所学的东西多记录下来.后 面本人将逐步写上更多关于本书的文章. 本文的理论知识来自于JavaScript权威指南,我这里做一下整理,或者说叫笔记. 如果你的基础够好的话,完全理解不成问题,但是如果读得有些郁闷

JavaScript的运算符(操作符)和优先级

最近因为在读 Underscore.js 的源代码,加上重拾之前没有完成 ife 中的 JavaScript 部分的 task2,其中大量简略的语句写法,尤其喜欢 ?: 这个三目运算符和其他运算符连用.因为对于运算符优先级的概念一直很模糊,然后经常被绕进圈子里面.下面整理下常用的运算符和它们的优先级差异. 一.运算符 1. 一元运算符 (1)  递增递减运算符 主要就是 a++ 和 ++a 的区别,执行前置递增和递减运算时,变量的值都是在语句被求值之前改变的. var num1 = 10; va

javascript特殊运算符

in运算符                 in运算符要求其左边的运算数是一个字符串,或可以被转换为字符串,右边的运算数十一个对象或数组.如果该 运算符左边的值是右边对象的一个属性名,则返回true,否则返回为false.eg: instanceof运算符instanceof运算符要求其左边的运算数是一个对象,右边的运算数是对象类的名字,如果该运算符左边的对象是右边类的一个实例,则返回true,否则返回false.eg: typeof运算符typeof是一个一元运算符,放在一个运算数之前,这个运

(4)javascript的运算符以及运算符的优先级

                                运算符的使用方法 在javascript的程序中要完成各种各样的运算,是离不开运算符的. 在javascript中,按运算符类型可以分为算术运算符.赋值运算符.比较运算符.逻辑运算符.条件运算符等. ( 图片来自于W3School离线手册) 算术运算符案例: <!doctype html> <head> <meta http-equiv="content-type" content="