轻松拿下JavaScript(一)——JavaScript常见问题
Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。 简而言之JavaScript就是一种提高用户体验的语言。
好了废话不多说,我们接下来先了解一下JavaScript的常见的问题,以便在稍后的编写代码中我们能轻而易举的实现我们的代码。这部分的内容我们主要讲以下几点:
区分大小写:
其实这部分的内容主要是为了区分咱们用别的语言来编写;咱们之前使用过的语言:vb就不区分大小写,而咱们讲的这个JavaScript就区分大小写。
JS中方法和变量都是区分大小写的,因此function myFunction{}和function Myfunction()是不同的。
这一规则也适用于JavaScript核心对象例如:Array和Object.我们在定义一个数组的时候Array,就必须是大写开头,当你写成小写之后,你会发现array的字体颜色会发生变化。
单引号、双引号:
单引号、双引号在JS中没有特殊的区别,都可以用来创建字符串。但作为一般性规则,大多数Js开发人员喜欢使用单引号而不是双引号,但是因为XHTML规范要求所有属性值都必须使用双引号括起来。这样在JS中使用单引号,而对XHTML属性使用双引号会使混合两者代码更方便也更清晰。
单引号中可以包含双引号,反之双引号也可以包含单引号。
我们看一个例子:
其实就是替换了第一个了。还有一点需要注意的是,JavaScript里边调用只与function的名字有关,与function的参数无关。如:
- <title>重载</title>
- </head>
- <script type="text/javascript">
- var a='123';
- function aa(){
- alert(a);
- }
- function aa(x,y,z){
- alert("这是第二个");
- }
- window.onload=aa;
- </script>
- <body >
- </body>
显示的结果还是和刚才一样。
当我们写JavaScript的方法的时候,一定要注意,名字不要使用保留字,除非你说我一定要覆盖他的保留方法,否则将导致你的代码覆盖JS核心函数:如:
- <title>重载</title>
- </head>
- <script type="text/javascript">
- var a='123';
- function aa(){
- alert(a);
- }
- function aa(x,y,z){
- alert("这是第二个");
- }
- function alert(){}
- window.onload=aa;
- </script>
- <body >
- </body>
则将什么也没显示,但是也不报错。
作用域、闭包:
作用域指对某一属性或方法具有访问权限的代码空间。
function myFunction(){
var temp="abc";
}
上面的temp在函数外面无法访问。
闭包是与作用域相关的一个概念,它指的是内部函数即使在外部函数执行完成并终止后仍然可以访问其外部函数的属性。如:
- <title>闭包</title>
- <script type="text/javascript">
- function newaa(){
- for(var i=1;i<=3;i++){
- var anchor=document.getElementById("anchor"+i);
- anchor.onclick=function(){
- alert("My anchor is anchor"+i);
- }
- }
- }
- window.onload=newaa;
- </script>
- </head>upload/201301121237158078.png" />
无论我们点击那个abc都会出现这种情况,这是为什么?我们看一下,当我们点击事件发生后,我们的onload事件已经加载完了,所以i就变成了4了。所以就造成了这种情况。我们看一下应该如何来解决这个问题呢:
- <title>闭包</title>
- <script type="text/javascript">
- function newaa(){
- for(var i=1;i<=3;i++){
- var&