一道非常有趣的但你未必能回答正确的JavaScript计算题
阿神
阿神 2017-04-10 15:22:46
[JavaScript讨论组]

下面将输出什么?

console.log(1 + - + + + - + 1)

如果你猜的答案跟你调试的答案一致,请说说你的理由。

阿神
阿神

闭关修行中......

全部回复(2)
巴扎黑

1 + - + + + - + 1 可以转化为:

1+(-(+(+(+(-(+1))))))

因为js计算是从左向右的, '+' 和 '-' 分别会进行算数运算,而每次运算的对象就是表达式。

所以,每次都会把符号右侧转化为表达式再计算,而转化成表达式之前又会对语句进行求值。

所以第一个 '+' 后的语句求值为表达式的结果为 1 因为都是Number , 所以 1 + 1 为 2.
伊谢尔伦

这类题目看AST就好了:

来源:http://jointjs.com/demos/javascript-ast

以及,这类题考的多半不是人而是算法/机器,除非你想自己解析javascript、做uglify、做语法高亮、做jshint。
(想起谭浩强的《未定义行为指南》了吗)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号