JavaScript里面的if为什么不需要end if
var time=d.getHours()
if (time==13)
{
以下是JavaScript容易犯错的几个"陷阱".由本人google+体验+搜集而来.虽然不是什么很高深的技术问题,但注意一下,会使您的编程轻松些.
1. 最后一个逗号
如这段代码,注意最后一个逗号,按语言学角度来说应该是不错的(python的类似数据类型辞典dictionary就允许如此)。IE会报语法错误,但语义不详,你只能用人眼从几千行代码中扫描。
<script> var theObj = { city : "ShenZhen", state : "ok", } </script>
2. this的引用会改变
如这段代码:
<input type="button" value="Gotcha!" id="MyButton" > <script> var MyObject = function () { this.alertMessage = "Javascript rules"; this.ClickHandler = function() { alert(this.alertMessage ); //行1 } }(); document.getElementById("theText").onclick = MyObject.ClickHandler; </script>
并不如你所愿,答案并不是”JavaScript rules”。在执行MyObject.ClickHandler时,在行1中,this的引用实际上指向的是document.getElementById("theText")的引用。可以这么解决:
<input type="button" value="Gotcha!" id="theText" > <script> var MyObject = function () { var self = this; this.alertMessage = “Javascript rules”; this.OnClick = function() { alert(self.value); } }(); document.getElementById(”theText”).onclick = MyObject.OnClick </script>
实质上,这就是JavaScript作用域的问题。如果你看过,你会发现解决方案不止一种。
3. 标识盗贼
在JavaScript中不要直接使用跟HTML的id一样的变量名。如下代码:
<input type="button" id="TheButton"> <script> TheButton = document.getElementById("TheButton"); </script>
2.3 String数据类型
由于JavaScript是一门支持松散类型的编程语言,字符串变量或者数字型、布尔型变量在声明时并没有什么差别,只有把文本赋给String(字符串)型变量,并且对变量进行初始化之后才定义了变量的上下文。
字符串文本是由单引号或双引号所引用的一系列字符,例如:
- var strString = "This is a string";
- var anotherString= 'But this is also a string';
JavaScript并未限定必须用单引号或双引号来表示字符串,唯一的规则是前后的符号必须匹配。字符串中可以包括各式各样的字符,例如:
- var thirdString = "This is 1 string.";
- var stringFour = "This is--another string.";
- var stringAsNumber = "543";
看到本期编程榜的标题你也许会觉得奇怪,编程语言和足球,他们之间会有什么联系吗?
世界杯让每个球迷都过足了瘾。球星与球队,对手与战术,胜利与失败,这都是足球的魅力。在本期编程语言排行榜的选题规划中,我们想将各种编程语言组成一支最佳阵容,把应用场景当成假想敌,会是怎样一种情形。于是,有了这期编程语言与足球混搭的编程榜。
这期编程榜,我们将应用场景锁定在Web应用开发领域。这里涉及大量的前端展示和交互、复杂的业务处理逻辑以及高效、稳定可靠的后端Web服务要求。这是绝大多数Web项目的需求描述,如果将其作为对手,我们会排出以下阵型。
前锋:HTML、Javascript;(替补:Flash、Silverlight)
今天Google发布了其内部使用的JavaScript开发工具Closure,并贡献给开源社区,在拍手称快的同时,我们来看看它究竟有些什么内涵。
Closure 编译器
Closure 编译器是一个JavaScript优化器,为Web应用程序生成紧凑,高性能的JavaScript代码,它移除了不必要的代码,并经过重写和优化,保持娇小的身材,以便在浏览器的JavaScript引擎上运行得更快,这个编译器也会检查语法,变量引用和类型,并对常见的JavaScript陷阱发出警告,这些功能有助于你写出bug更少,更易于维护的程序。你也可以使用Closure检查器,它是一个Firebug扩展,主要用于调试那些难以阅读的代码。
因为JavaScript开发人员是一个多样化的群体,Google还设计了许多方法来运行Closure 编译器,同时内置了一个命令行工具,如果你还想偷懒,Google也提供了一个在线页面,你可以将你的JavaScript代码放入该网页中的文本输入框中,让它帮你编译,也可以调用RESTful API来完成编译。此外,Google提供了著名的Firefox 扩展Page Speed,让开发人员可以在Firefox 中方便地查看网页的性能。
在任何一个希望对用户友好一些的web页面中,弹出窗口这个功能基本上是报废了。别说真要使用上这功能,甚至于想一想都觉得这个念头恶心、邪恶。除了任意一个浏览器工具栏能将其拦截外,Windows XP SP2以后已经在IE里内置了对弹出窗口的阻止。这真是web开发中一个无比搞笑,而又尴尬的功能。
window.open作为一个普通的浏览器API接口,因为一小撮人的滥用,造成了今天如同过街老鼠人人喊打的局面。又由于拦截弹出窗口的工具、插件过于普及,现在真正希望合理使用一下这个功能的网页,面对众多的拦截器,也都不得不放弃之。当然还有很多政府部门的网站,喜欢使用这个功能来弹出通告,并且不辞辛劳的提醒用户:如果您的浏览器会拦截弹出窗口,请将此功能关闭。