在JS中是(a==b==c)和((a=+=b)&&(a==c)&&(b==c))相同//对不
in JS, are (a===b===c) and ( (a===b)&&(a===c)&&(b===c) ) the same? //sorry for my ignorance
我的目标是"在只有a、b和c相等的情况下执行代码"。我算出了两个代码:
代码#1:
if (a===b===c) {console.log('something')};
代码#2:
if ( (a===b)&&(a===c)&&(b===c) ) {console.log('something')};
我尝试了这两种方法,并意识到只有"代码#2"才能响应我的目的(仅在3个变量相等时执行(例如a=b=c
),但对于"代码#1",只要有2个等效变量(例如a=b
或b=c
.),它就会执行
我的问题是:"代码#1和代码#2之间有什么区别?"
您实际要问的问题是这两者是否相同:
if (a === b === c) {...}
if ((a === b) && (b === c) && (a === c)) {...}
很快,他们就不是了。第一种可以概括为:
if ((a === b) === c) {...}
如果a和b相等,则评估为
if (true === c) {...}
这与检查三者是否相等不同
要检查三种方式的相等性,您必须手动检查所有方面:
if ((a === b) && (b === c)) {...}
我将尝试解释其中的区别。解释第一个代码示例:
if (a=b=c) {console.log('something')};
// Code above means: if (c) {console.log('something')};
// So if Boolean(c) is false, console.log will not work
解释第二个例子:
if ( (a=b)&&(a=c)&&(b=c) ) {console.log('something')};
// Code above means: if (b && c && c) {console.log('something')};
// So if Boolean(c) or Boolean(b) is false, console.log will not work
赋值运算符根据其右操作数的值为其左操作数赋值,并返回其右操作数值。
真值表的时间。。。最后两列是您正在比较的表达式
A | B | C | A == B | (A == B) == C | A == B && B == C
--------+-------+-------+-----------+---------------+-----------------
TRUE | TRUE | TRUE | TRUE | TRUE | TRUE
TRUE | TRUE | FALSE | TRUE | FALSE | FALSE
TRUE | FALSE | TRUE | FALSE | FALSE | FALSE
TRUE | FALSE | FALSE | FALSE | TRUE | FALSE
FALSE | TRUE | TRUE | FALSE | FALSE | FALSE
FALSE | TRUE | FALSE | FALSE | TRUE | FALSE
FALSE | FALSE | TRUE | TRUE | TRUE | FALSE
FALSE | FALSE | FALSE | TRUE | FALSE | TRUE
不!它们不一样。
相关文章:
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 用与线条相同的颜色填充多折线图上的点
- Angular js-返回一个包含类似
- 一点javascript元编程&可链接的设置器
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 选中多个具有相同名称的复选框
- 通过JSON&比较时间
- Jquery模板,如果xx&&如果yy
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 使用相同的数据集绘制各种符号
- jQuery工具验证器自定义效果-添加&消除影响
- Twitter引导程序Typeahead-Id&标签
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- AngularJS&JSON-从Previous&下一个对象
- 什么是&&在没有if的行中的变量之间
- 在JS中是(a==b==c)和((a=+=b)&&(a==c)&&(b==c))相同//对不
- 如何保持页眉&页脚相同,如果我想保持前端在Javascript
- 登录&注册相同的脚本,但其中一个没有'不起作用