javascript if else的配对问题

作者: admin 日期: 2018-01-30 10:04:33 人气: - 评论: 0

由于在javascript中if和else语句的花括号可以省略所以在理解上容易出现歧义

比如下面这个情况

var m = 1;
var n = 2;

if (m !== 1)
if (n === 2) console.log('hello');
 else console.log('world');

如果不看javascript的上下文无关语法的描述,其实是没法判断最后一个else是和哪个if配对的,

实际上javascript规定了else总是和最近的if配对的,所以上面的代码相当于下面这样

if (m !== 1) {
if (n === 2) {
console.log('hello');
 } else {
console.log('world');
 }
}


对比下lisp代码强制要求使用括号包裹反而更简洁而且不容易出现歧义

(def m 1)
(def n 2)
(println
 (if (not= 1 m)
(if (= 2 n)
"hello")
"world")
)


相关内容

发表评论
更多 网友评论0 条评论)
暂无评论

Copyright © 2012-2014 我的代码板 Inc. 保留所有权利。

页面耗时0.0236秒, 内存占用1.82 MB, 访问数据库13次

闽ICP备15009223号-1