宇宙外面是什么呢?估计这个问题要困扰很多人,让我们用一段javascript代码来回答一下。
一、从一段代码说起
[js]var 地球 = {
名字 : "地球",
女友 : "月亮",
外面 : {
名字 : "太阳系",
老大 : "太阳",
老二 : {
名字 : "木星",
二奶 : "木卫二(Europa)", // eclipse 3.3版本代号(欧罗巴)
小三 : "木卫三(Ganymede)"// eclipse 3.4版本代号(盖尼米德)
},
外面 : {
名字 : "银河系",
外面 : {
名字 : "宇宙",
年龄 : 13700000000
}
}
}
};
var 宇宙 = 地球.外面.外面.外面;
alert("宇宙的年龄是:" + 宇宙.年龄 + "," + "宇宙的外面是:" + 宇宙.外面);
// alert("宇宙的外面在哪:" + 宇宙.外面.位置);[/js]
怎么运行呢?很简单,拷贝出来,以谷歌浏览器Chrome为例,按F12,出来开发人员工具,选择最右端的“Console”,粘贴,回车!答案即可揭晓:
看到了吗?华丽丽的一个undefined(未定义)
二、自然语言由于过于灵活而失去严谨与精确
其实看了代码我们就已经明白是这样的结果了,在这里我想说什么呢?我们的日常语言其实是很不严谨,很不精确的,当层次很多时甚至引发了矛盾我们却还浑然不知,以下图为例
我想这就是很多人的宇宙观,里面的一层层都有着明确的边界,但到了宇宙这一层面,则是一种开放式的定义,是没有边界的。但当这种层次很多时,我们常常忘记了我们前面预设的一些前提。
比方说,你不会去问一个女生说:“你的JJ有多长之类的”
请原谅一时没有想到更好的例子~
因为这很明显是一个有问题的问题,如果问题本身就有问题,又怎么能去正确地回答呢?
古语云:皮之不存,毛将附焉!
当皮都没有的时候,你问皮上的毛是什么颜色,显然无法回答,所以这位女生最好的回答大概只能是纠正你说:“木有小JJ!”当然了,我们肯定不会去问这类问题,因为矛盾太明显了。
但有时候矛盾很隐藏得比较深,比如这个宇宙外面是什么的问题,我们常常先认定了宇宙是开放的,是没有边界的,而我们说里面,外面则又暗示了它有个明确的边界。毕竟只有有明确的边界我们才能去说“里面”和“外面”,所以这里面是有矛盾的,除非我们先把宇宙是否有边界的这一前提讨论清楚,不然讨论后一个问题就没有意义。
三、编程语言则相对严谨精确得多
在javascript,你要是没有定义,就相当于前提都没达成,undefined既不是是,也不是否,
当然了,在编程中这个常常可以当成false,但如果使用严格等于去判断,即三个等号===,那么它跟false是不等的。
既没有说它是什么,也没有说它不是什么。undefined就是undefined,就是未定义。连外面都还没定义,你却试图问宇宙外面是什么,自然就是undefined了。如果你试图跳过它去进一步追问“宇宙.外面.位置”:
那么运行时javascript就会给你报错了。当然你写的时候是很自由的,javascript没有编译的概念,你写错了不运行它也不知道,不过现在的IDE也很强大了,以我使用的eclipse为例,当你敲入“宇宙.”之时,提示就已经出来了
我们可以看到,除了核心javascript中的几个属性和方法之外,就是我们定义的“名字”与“年龄”两个属性了。根本就没有所谓的“外面”,当然也更谈不上“外面.位置”了!