js中的逗号运算符
逗号运算符
逗号运算符是二元运算符,它的操作数可以是任意类型。它首先计算左操作数,然后计算右操作数,最后返回右操作数的值,用逗号运算符可以在一条语句中执行多个运算
作用:
1.在一条语句中从左到右执行多个运算
2.返回右边最后一个值作为表达式的结果(经常被忽略但是却很重要的特性)
(i = 0), (j = 1), (k = 2);
//计算结果是2,它和下面的代码基本等价
i = 0;
j = 1;
k = 2;
console.log(((i = 1), (j = 2), (k = 3))); //计算结果为2
应用场景:
1.同时声明多个变量
var iNum1 = 1,
iNum = 2,
iNum3 = 3;
2.for 循环中三部分有多个变量时,使用,分割
var k;
for (var i = 0, j = 0; i < 6, j < 10; i++, j++) {
k = i + j;
}
console.log(k);
来一道醍醐灌顶的面试题:
var k;
for (var i = 0, j = 0; i < 6, j < 10; i++, j++) {
k = i + j;
}
console.log(k); //k=?
结果推测:
- k=10
解析:
因为 i=6 时,不满足条件,跳出循环。(关系间为&&关系) - k=12
基础原因考虑到 1,然后推测 k=i+j 是引用函数中的 i、j 所以当 log(k)的时候,应该输出 i、j 循坏结束后的值即 i=j=6(闭包后遗症) - k=18
因为 i < 6, j < 10 是或的关系,需要两者同时值为 false - k=18
逗号运算符从左到右依次计算每个操作符,最终结果由最右的操作数决定,j<10 才为中止条件。
输出答案:
console.log(k); //k=18
3、4 推测验证:
var k;
for (var i = 0, j = 0; i < 6, j < 10, 2 < 1; i++, j++) {
k = i + j;
}
console.log(k);
验证分析:
1.逗号分隔的是或的关系,那么需要所有表达式都为false,结果依然为18
2.逗号分隔为运算符,那么条件判断最终结果为最右表达式2<1,那么将不进入循环,直接输出undefiend
验证结果:
console.log(k);//k=undefined
结果分析,最终输出k=undefined,for中的判断表示式使用逗号分隔时,遵循逗号运算符的基本规则,最终结果由最右的操作数决定
js中的逗号运算符的更多相关文章
- js中的等值运算符(抽象相等==与严格相等===的区别)
js中的等值运算符 js中的相等分为抽象相等和严格相等,他们有什么区别呢. 在说具体算法前,先提下JS数据类型,JS数据类型分为6类:Undefined Null String Number Bool ...
- JavaScript中的逗号运算符
JavaScript逗号运算符 阅读本文的前提,明确表达式.短语.运算符.运算数这几个概念. 所谓表达式,就是一个JavaScript的“短语”,JavaScript解释器可以计算它,从而生成一个值 ...
- JS中的各类运算符
2020-04-15 JS中的各类运算符 // 假设有如下代码,那么a(10)的返回结果是?( ) function a(a) { a^=(1<<4)-1; return a; } // ...
- C语言中关于逗号运算符的理解
在C语言中运算符有很多,包括算数运算符.关系运算符.赋值运算符.位运算符.逻辑运算符.三目运算符.sizeof运算符.逗号运算符等等,那今天我们就重点来给大家讨论一下关于逗号运算符的一些运算规则. 首 ...
- js中的instanceof运算符
概述 instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上 语法 obj instanceof Object;//true 实例obj ...
- js中对于逗号的运算符!
先展示一个例子! var f = (function f() { return '1'; } , function g(){ return 1; } )(); console.log(typeof f ...
- JS中的加号+运算符详解
加号+运算符 在 JavaScript 中,加法的规则其实很简单,只有两种情况: 把数字和数字相加 把字符串和字符串相加 所有其他类型的值都会被自动转换成这两种类型的值. 为了能够弄明白这种隐式转换是 ...
- js中的位运算符 ,按位操作符
按位操作符(Bitwise operators) 将其操作数(operands)当作32位的比特序列(由0和1组成),而不是十进制.十六进制或八进制数值.例如,十进制数9,用二进制表示则为1001.按 ...
- JS中关于比较运算符的问题(a===b)
之前也会碰到a===b和a==b的表达式,但都没有仔细的看资料,今天看canvas有关的书中提到了,就mark一下: a == b 说明:a与b相等: a ===b 说明:a与b相同,并且类型 ...
随机推荐
- jQuery中使用Ajax获取JSON格式数据示例代码
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于“名称”和“值”的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中 ...
- C#读写调整设置UVC摄像头画面-亮度
有时,我们需要在C#代码中对摄像头的亮度进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像 ...
- POI SXSSF API 导出1000万数据示例
SXSSF是XSSF API的兼容流式扩展,在必须生成非常大的电子表格.并且堆空间有限时使用. SXSSF通过限制对滑动窗口内数据的访问实现低内存占用,而XSSF允许访问文档中的所有行. 不在窗口中的 ...
- 模型文件(checkpoint)对模型参数的储存与恢复
1. 模型参数的保存: import tensorflow as tfw=tf.Variable(0.0,name='graph_w')ww=tf.Variable(tf.random_normal ...
- CSS中:和::
一个冒号是伪类,两个冒号是伪元素 伪类可以独立于文档的元素来分配样式,且可以分配给任何元素,逻辑上和功能上类类似,但是其是预定义的.不存在于文档树中且表达方式也不同,所以叫伪类.伪元素所控制的内容和一 ...
- JavaScript 之 页面加载事件
一.onload 加载事件 onload 是 window 对象的一个事件,也可以省略 window 直接使用. 常用方式: <head><script> windown.on ...
- 【译】Matplotlib:plotting
前言 本教程源于Scipy Lecture Notes,URL:http://www.scipy-lectures.org/ 本教程若有翻译不当或概念不明之处,请大家留言,博主及时更正,以便后来的用户 ...
- Python人工智能常用库Numpy使用入门
第一章 jupyter notebook简单教程 命令模式按键esc开启 Enter : 转入编辑模式 Shift-Enter : 运行本单元,选中下个单元 Ctrl-Enter : 运行本单元 Al ...
- Api测试-为postman自动添加cookie
使用postman来调试接口,会被buc-sso-csrf等拦截,需要自己挨个添加cookie,但是cookie又有失效时间,所以本篇介绍如何使用插件来自动获取cookie进行接口api测试 一.安装 ...
- 浏览器渲染html的过程
关于浏览器如何渲染html界面一直不太清晰,所以现在理一理.由于本身对前深入的东西不太清晰,这篇博客更多的是在记录. 参考:https://www.cnblogs.com/dojo-lzz/p/398 ...