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