扫码关注官方订阅号
下面将输出什么?
console.log(1 + - + + + - + 1)
如果你猜的答案跟你调试的答案一致,请说说你的理由。
闭关修行中......
1 + - + + + - + 1 可以转化为:
1+(-(+(+(+(-(+1)))))) 因为js计算是从左向右的, '+' 和 '-' 分别会进行算数运算,而每次运算的对象就是表达式。 所以,每次都会把符号右侧转化为表达式再计算,而转化成表达式之前又会对语句进行求值。 所以第一个 '+' 后的语句求值为表达式的结果为 1 因为都是Number , 所以 1 + 1 为 2.
这类题目看AST就好了:
来源:http://jointjs.com/demos/javascript-ast
以及,这类题考的多半不是人而是算法/机器,除非你想自己解析javascript、做uglify、做语法高亮、做jshint。 (想起谭浩强的《未定义行为指南》了吗)
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
1 + - + + + - + 1 可以转化为:
这类题目看AST就好了:
来源:http://jointjs.com/demos/javascript-ast
以及,这类题考的多半不是人而是算法/机器,除非你想自己解析javascript、做uglify、做语法高亮、做jshint。
(想起谭浩强的《未定义行为指南》了吗)