JavaScript最让人费解的十件事(
原文地址:http://developer.51cto.com/art/201002/185161.htm
JavaScript是一种广泛用于客户端Web开发的脚本语言,其可算是世界上最流行的编程语言,它曾被Web开发设计师贴上噩梦的标签,虽然真正的噩梦其实是DOM API,也曾经有人认为JavaScript语法中有很多陷阱,同时其也有很多让人费解的东西。
1. 它以Java命名,但并不是Java
它最初叫Mocha, 接着改名为 LiveScript,最后才确定命名为JavaScript,根据历史记录,Java 的命名与 Netscape 和 Sun 之间的合作有关,作为交换条件,Netscape 在他们备受欢迎的浏览器中创建了 Java 运行时。值得一提的是,这个名字的出台几近一个玩笑,要知道,LiveScript 和 Java 在客户端脚本方面存在敌对关系,不管怎么说,人们后来不得不一再澄清的一件事就是,JavaScript 和 Java 毫无关系。
2. Null 是个对象?
看看这段代码,它返回的是object。
这实在令人费解,假如 null 表示空值,它怎么可以是对象?简单说,它是JavaScript 最初版本的错误,这个错误甚至被微软的 JScript 直接借用。
3. NaN !== NaN
NaN,表示一个非数字的值,然而问题是,NaN不等于任何东西,甚至不等于它自己。
这显然不对,事实上,如果要判断一个值确实是 NaN,你需要用 isNaN() 函数。
4. 全局变量
对全局变量的依赖一直被视为 JavaScript 最坏的部分(ECMA 的 JavaScript 5 已经去掉了全局变量,请参阅 ECMA 推出 JavaScript 5 - 译者注)。对简单的页面,这无所谓,但复杂的页面,如果包含大量 JavaScript 脚本,你很难知道某个全局变量是在哪里声明的,如果几个全局变量不小心重名,就会引发错误。
5. 那些统统被探测为Mozilla User-Agent 的浏览器
必须承认,事实上,这不是JavaScript 的错,是各个浏览器有意为之。比如,以下是用JavaScript 探测Safari 时得到的结果:
是否注意到其中的第一个单词 Mozilla/5.0,为什么 Safari 会被探测为 Mozilla,尽管 Safari 后来已经纠正这一问题,但仍然不能解释为什么它们要这样误导开发者。事实上,你会发现,绝大多数浏览器把他们的 User Agent 设置为 Mozilla,答案要回到10年前,这更多是一种策略。User Agent 是一段用来标识当前浏览器身份的字符串,世界上第一个浏览器Mosaic,曾这样标志自己:
这很合理,因此当 Netscape 出来的时候,它保留了Mosaic这个传统,还在后面添加了一个加密方式部分。
到目前为止,一切安好,直到 IE3 发布,当 IE3 发布的时候,Ne
相关文档:
今天的话题是如何改进自己网站的界面或提高网站的视觉体验,从而让用户记忆犹新。
我们有三种主要的方法(从难到易):自己动手写脚本;使用类似于jQuery和mooTools的JavaScript框架(可以让编写代码变
得更容易些);使用能工作于现有的JavaScript框架下的提前预置好的脚本或那种从头开始开发的创建者。这篇文章适合那些打� ......
history对象3个方法back()、forward()和go(),这些方法可以调用历史表中包含的文档。
back()方法装入历史表中的前一个页面,等效于浏览器中的Back按钮
forward()方法装入历史表中的后一个页面,等效于浏览器中的Forward按钮
go()方法进入历史表中的特定文档,可以取整形参数或字符串参数
go(n)n>0时,装入历史表中的 ......
引言
在JavaScript中我们使用了一种被称为 JavaScript Object Notation(缩写JSON)的形式,翻译为中文就是“JavaScript对象表示法”。它可以简介清晰地将对象的结构描述出来,从而大大降低了我们的工作量并减少了数据量。
Json示例
<script languag ......
每一项都是js中的小技巧,但十分的实用!
1.document.write(""); 输出语句
2.JS中的注释为//
3.传统的HTML文档顺序是:document->html->(head,body)
4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)
5.得到表单中元素的名称和值:document.getElementById("表单中元素的 ......