Comments (4)
(object2 > object1 +-- object1) + true)
object1和object2 都是对象,所以运算的时候会调用valueOf方法,所以得到:
(2 > 1 + --1) + true)
--1为前递减所以为0,2 > 1为true 得到:
(true + 0) + true)
布尔值在运算时会自动转为数字 true -> 1 false -> 0
得到:
(1+ 0) + 1)
所以结果是2
from frontend-interview.
(object2 > object1 +-- object1) + true);
先算大于号
obj2 > obj1 == 2 > 1 == true;
=>
true + -- obj1 == true + --1 == true + 0 == 1 + 0 == 1;
=>
1 + true == 1 + 1 == 2
故输出2
from frontend-interview.
参考MDN的运算符优先级
() 19级 -- 15级 + 13级 >11 级
(object2 > object1 +-- object1) + true)
object1和object2 都是对象,所以运算的时候会调用valueOf方法,所以得到:
(2 > 1 + --1) + true) => ((2>1 + 0)+true) => ((2>1)+true) >=(true+true) >=(1+1) >=2
from frontend-interview.
结果输出是2;
原因:
1.对对象进行的计算会先调用对象的valueOf方法,无结果再调用toString方法,这里的两个对象都有valueOf方法,所以调用成功,所以式子(object2 > object1 +-- object1)
,转化为
(2 > 1 + --1) + true
2.在2 > 1 + --1
中,自减符号优先级高,先计算--1
,得出结果0,2 > 1
结果为true,最后式子变成
(true + 0) + true
3.因为加法运算符,true转化为1,所以结果为2
from frontend-interview.
Related Issues (20)
- JS 作用域链相关问题 HOT 5
- JS 作用域、原型链 HOT 3
- 重复声明两个函数会怎样? HOT 4
- ES5中“严格模式”与“非严格模式”的区别? HOT 3
- ajax请求序列化问题 HOT 5
- 循环/闭包/setTimeout/Promise 综合 HOT 1
- 服务端如何区分不同的用户 HOT 4
- 使用ES6实现该方法 HOT 13
- dom操作相关 HOT 7
- 什么是FP?与OOP的关系?
- 为何会出现浏览器兼容性问题?如何解决? HOT 2
- 前端性能优化 HOT 2
- JavaScript 分组 HOT 13
- 自适应和响应式有什么区别和联系
- 如何实现深拷贝? HOT 1
- 两个js数组相关题目 HOT 7
- 面试题汇总
- jrg interview questions HOT 7
- 实现一个深拷贝 HOT 8
- 宏任务微任务题 HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from frontend-interview.