Dream Maker 老漂 不要有和人斗的心,你要赢的是你自己!

注意! JavaScript中的"陷阱"

以下是JavaScript容易犯错的几个"陷阱".由本人google+体验+搜集而来.虽然不是什么很高深的技术问题,但注意一下,会使您的编程轻松些.

1. 最后一个逗号

如这段代码,注意最后一个逗号,按语言学角度来说应该是不错的(python的类似数据类型辞典dictionary就允许如此)。IE会报语法错误,但语义不详,你只能用人眼从几千行代码中扫描。

 

Js代码 "复制代码"
  1. <script>   
  2.   var theObj = {   
  3.         city : "ShenZhen",   
  4.         state : "ok",   
  5.   }   
  6. </script>   
<script>
  var theObj = {
        city : "ShenZhen",
        state : "ok",
  }
</script> 




2. this的引用会改变

如这段代码:

 

Js代码 "复制代码"
  1. <input type="button" value="Gotcha!" id="MyButton" >   
  2. <script>   
  3. var MyObject = function () {   
  4.     this.alertMessage = "Javascript rules";   
  5.     this.ClickHandler = function() {   
  6.         alert(this.alertMessage );  //行1   
  7.   }   
  8. }();   
  9. document.getElementById("theText").onclick =  MyObject.ClickHandler;   
  10. </script>  
<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")的引用。可以这么解决:
 

Js代码 "复制代码"
  1. <input type="button" value="Gotcha!" id="theText" >   
  2. <script>   
  3. var MyObject = function () {   
  4.     var self = this;   
  5.     this.alertMessage = “Javascript rules”;   
  6.     this.OnClick = function() {   
  7.         alert(self.value);   
  8.     }   
  9. }();   
  10. document.getElementById(”theText”).onclick =  MyObject.OnClick   
  11. </script>  
<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一样的变量名。如下代码:

 

Js代码 "复制代码"
  1. <input type="button" id="TheButton">   
  2. <script>   
  3.     TheButton = document.getElementById("TheButton");   
  4. </script>  
<input type="button" id="TheButton">
<script>
    TheButton = document.getElementById("TheButton");
</script>

常量和变量的区别

不管什么语言,这两个词的定义都是一样的.
常量就是不可改变的值,比如,ABC,123之类,
而变量呢,就是可以改变的值.在C中,比如定义一个整型变量:int a;那么你可以把任何int范围内的整型值赋给a.

===============================================================

JavaScript String数据类型

  • 摘要:《Javascript学习指南(第2版)》第2章介绍JavaScript的基本数据类型,包括字符串、数字和布尔值,以及这些数据类型的内建函数。还将介绍JavaScript中两个特殊的数据类型null和undefined(未定义)。最后还将说明字符串的转义以及Unicode编码。此外还将深入介绍变量,以及如何让变量名称有效且有意义。本节说的是String数据类型。

2.3  String数据类型

由于JavaScript是一门支持松散类型的编程语言,字符串变量或者数字型、布尔型变量在声明时并没有什么差别,只有把文本赋给String(字符串)型变量,并且对变量进行初始化之后才定义了变量的上下文。

字符串文本是由单引号或双引号所引用的一系列字符,例如:

  1. var strString = "This is a string";  
  2. var anotherString= 'But this is also a string'; 

JavaScript并未限定必须用单引号或双引号来表示字符串,唯一的规则是前后的符号必须匹配。字符串中可以包括各式各样的字符,例如:

  1. var thirdString = "This is 1 string.";  
  2. var stringFour = "This is--another string.";  
  3. var stringAsNumber = "543"; 

7月编程语言排行榜:这里有支足球队

看到本期编程榜的标题你也许会觉得奇怪,编程语言和足球,他们之间会有什么联系吗?

世界杯让每个球迷都过足了瘾。球星与球队,对手与战术,胜利与失败,这都是足球的魅力。在本期编程语言排行榜的选题规划中,我们想将各种编程语言组成一支最佳阵容,把应用场景当成假想敌,会是怎样一种情形。于是,有了这期编程语言与足球混搭的编程榜。

"7月编程语言排行榜" 
主流编程语言组成的最佳阵容

这期编程榜,我们将应用场景锁定在Web应用开发领域。这里涉及大量的前端展示和交互、复杂的业务处理逻辑以及高效、稳定可靠的后端Web服务要求。这是绝大多数Web项目的需求描述,如果将其作为对手,我们会排出以下阵型。

前锋:HTML、Javascript;(替补:Flash、Silverlight)

Tags: 编程

发布: 老漂 分类: 网站|站长 评论: 0 浏览: 106

Google的JavaScript开发工具Closure

今天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 中方便地查看网页的性能。

你还敢使用window.open弹广告吗?

在任何一个希望对用户友好一些的web页面中,弹出窗口这个功能基本上是报废了。别说真要使用上这功能,甚至于想一想都觉得这个念头恶心、邪恶。除了任意一个浏览器工具栏能将其拦截外,Windows XP SP2以后已经在IE里内置了对弹出窗口的阻止。这真是web开发中一个无比搞笑,而又尴尬的功能。

    window.open作为一个普通的浏览器API接口,因为一小撮人的滥用,造成了今天如同过街老鼠人人喊打的局面。又由于拦截弹出窗口的工具、插件过于普及,现在真正希望合理使用一下这个功能的网页,面对众多的拦截器,也都不得不放弃之。当然还有很多政府部门的网站,喜欢使用这个功能来弹出通告,并且不辞辛劳的提醒用户:如果您的浏览器会拦截弹出窗口,请将此功能关闭。

Tags: 编程

发布: 老漂 分类: 网站|站长 评论: 0 浏览: 94

Javascript条件语句

在一般情况下,程序语句的执行是按照其书写顺序来执行的。前面的代码先执行,后面的代码后执行。但是这种简单的自上而下的单向流程只适于用一些很简单的程序。大多数情况下,需要根据逻辑判断来决定程序代码执行的优先顺序。要改变程序代码执行的先后顺序,任何编程语言都需要用到条件语句和循环语句,Javascript也不例外。

这一节我们主要介绍Javascript条件语句。

Javascript条件语句有以下几种: