JavaScript基础知识一

JavaScript 变量###

与代数一样,JavaScript 变量可用于存放值(比如 x=2)和表达式(比如 z=x+y)。变量可以使用短名称(比如 x 和 y),也可以使用描述性更好的名称(比如 age, sum, totalvolume)。

  • 变量必须以字母开头
  • 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)
  • 变量名称对大小写敏感(y 和 Y 是不同的变量)

提示:JavaScript 语句和 JavaScript 变量都对大小写敏感。

声明(创建) JavaScript 变量####

在 JavaScript 中创建变量通常称为“声明”变量。我们使用 var 关键词来声明变量:

var carname;

一条语句,多个变量####

您可以在一条语句中声明很多变量。该语句以 var 开头,并使用逗号分隔变量即可:

var name="Gates", age=56, job="CEO";

声明也可横跨多行:

var name="Gates",
age=56,
job="CEO";

Value = undefined####

在计算机程序中,经常会声明无值的变量。未使用值来声明的变量,其值实际上是 undefined。在执行过以下语句后,变量 carname 的值将是 undefined:

var carname;

重新声明 JavaScript 变量####

如果重新声明 JavaScript 变量,该变量的值不会丢失。在以下两条语句执行后,变量 carname 的值依然是 "Volvo":

var carname="Volvo";
var carname;

JavaScript 错误 - Throw、Try 和 Catch###

try 语句测试代码块的错误;catch 语句处理错误;throw 语句创建自定义错误。

JavaScript 测试和捕捉####

try 语句允许我们定义在执行时进行错误测试的代码块;catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块;JavaScript 语句 try 和 catch 是成对出现的。

语法#####
try
  {
  //在这里运行代码
  }
catch(err)
  {
  //在这里处理错误
  }

Throw 语句####

throw 语句允许我们创建自定义错误。正确的技术术语是:创建或抛出异常(exception)。如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。异常可以是 JavaScript 字符串、数字、逻辑值或对象。

语法#####
throw exception
实例#####

本例检测输入变量的值。如果值是错误的,会抛出一个异常(错误)。catch 会捕捉到这个错误,并显示一段自定义的错误消息:

<script>
function myFunction(){
try{
  var x=document.getElementById("demo").value;
  if(x=="")    throw "empty";
  if(isNaN(x)) throw "not a number";
  if(x>10)     throw "too high";
  if(x<5)      throw "too low";
}
catch(err){
  var y=document.getElementById("mess");
  y.innerHTML="Error: " + err + ".";
}
}
</script>

<h1>My First JavaScript</h1>
<p>Please input a number between 5 and 10:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="mess"></p>

JavaScript 表单验证###

JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。

被 JavaScript 验证的这些典型的表单数据有:

  • 用户是否已填写表单中的必填项目?
  • 用户输入的邮件地址是否合法?
  • 用户是否已输入合法的日期?
  • 用户是否在数据域 (numeric field) 中输入了文本?

必填(或必选)项目####

下面的函数用来检查用户是否已填写表单中的必填(或必选)项目。假如必填或必选项为空,那么警告框会弹出,并且函数的返回值为 false,否则函数的返回值则为 true(意味着数据没有问题):

function validate_required(field,alerttxt){
with (field)
{
    if (value==null||value==""){
        alert(alerttxt);return false
    }else{
        return true
    }
    }
}

下面是连同 HTML 表单的代码:

<html>
<head>
<script type="text/javascript">

    function validate_required(field,alerttxt){
        with (field){
          if (value==null||value==""){
            alert(alerttxt);
            return false;
          }else{
            return true
          }
    }
    }

function validate_form(thisform){
    with (thisform){
      if (validate_required(email,"Email must be filled out!")==false){
        email.focus();
        return false
      }
    }
}
</script>
</head>

<body>
<form action="submitpage.htm" onsubmit="return validate_form(this)" method="post">
    Email: <input type="text" name="email" size="30">
    <input type="submit" value="Submit"> 
</form>
</body>

</html>

E-mail 验证####

下面的函数检查输入的数据是否符合电子邮件地址的基本语法。意思就是说,输入的数据必须包含 @ 符号和点号(.)。同时,@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号:

function validate_email(field,alerttxt){
    with (field){
        apos=value.indexOf("@");
        dotpos=value.lastIndexOf(".");
        if (apos<1||dotpos-apos<2) {
            alert(alerttxt);return false
        }else{
        return true
        }
    }
}

下面是连同 HTML 表单的完整代码:

<html>
<head>
<script type="text/javascript">
    function validate_email(field,alerttxt){
        with (field){
            apos=value.indexOf("@");
            dotpos=value.lastIndexOf(".");
            if (apos<1||dotpos-apos<2){
                alert(alerttxt);return false
            }else{
            return true;
            }
        }
}

function validate_form(thisform){
    with (thisform){
        if (validate_email(email,"Not a valid e-mail address!")==false){
            email.focus();
            return false;
        }
    }
}
</script>
</head>

<body>
<form action="submitpage.htm"onsubmit="return validate_form(this);" method="post">
    Email: <input type="text" name="email" size="30">
    <input type="submit" value="Submit"> 
</form>
</body>

</html>

JavaScript 对象####

访问对象的属性####

属性是与对象相关的值。访问对象属性的语法是:

objectName.propertyName;

这个例子使用了 String 对象的 length 属性来获得字符串的长度:

var message="Hello World!";
var x=message.length;

在以上代码执行后,x 的值将是:12

访问对象的方法####

方法是能够在对象上执行的动作。您可以通过以下语法来调用方法:

objectName.methodName();

这个例子使用了 String 对象的 toUpperCase() 方法来将文本转换为大写:

var message="Hello world!";
var x=message.toUpperCase();

在以上代码执行后,x 的值将是:HELLO WORLD!

创建 JavaScript 对象####

通过 JavaScript,您能够定义并创建自己的对象。创建新对象有两种不同的方法:

  1. 定义并创建对象的实例
  2. 使用函数来定义对象,然后创建新的对象实例
创建直接的实例#####

这个例子创建了对象的一个新实例,并向其添加了四个属性:

实例######
person=new Object();
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";
实例######
person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};
使用对象构造器#####

本例使用函数来构造对象:

实例######
function person(firstname,lastname,age,eyecolor){
    this.firstname=firstname;
    this.lastname=lastname;
    this.age=age;
    this.eyecolor=eyecolor;
}

一旦您有了对象构造器,就可以创建新的对象实例,就像这样:

var myFather=new person("Bill","Gates",56,"blue");
var myMother=new person("Steve","Jobs",48,"green");

Object 类型####

创建Object实例的方式有两种。第一种是使用new操作符后跟Object构造函数,如下所示:

var person = new Object();
person.name = "Nicholas";
person.age = 29;

另一种方式是使用对象字面量表示法。如下所示:

var person = {
    name : "Nicholas",
    age : 29
};

在这个例子中,左边的花括号({)表示对象字面量的开始,赋值操作符表示后面是一个值,所以左边花括号在这里表示一个表达式的开始。

然后,我们定义了name属性,之后是一个冒号,再后面是这个属性的值。在对象字面量中,使用逗号来分隔不同的属性,因此"Nicholas"后面是一个逗号。但是,在age属性的值29的后面不能添加逗号,因为age是这个对象的最后一个属性。在最后一个属性后面添加逗号,会在IE7及更早版本和Opera中导致错误。

在使用对象字面量语法时,属性名也可以使用字符串,如下面这个例子所示:

var person = {
    "name" : "Nicholas",
    "age" : 29
};

一般来说,访问对象属性时使用的都是点表示法,这也是很多面向对象语言中通用的语法。不过,在JavaScript也可以使用方括号表示法来访问对象的属性。在使用方括号语法时,应该将要访问的属性以字符串的形式放在括号中,如下所示:

alert(person["name"]);       //"Nicholas"
alert(person.name);         //"Nicholas"

从功能上看,这两种访问对象属性的方法没有任何区别。但方括号语法的主要优点是可以通过变量来访问属性。如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,也可以使用方括号表示法。

var propertyName = "name";
alert(person[propertyName]);   //"Nicholas"

person["first name"] = "Nicholas";

Array类型####

ECMAScript数组的每一项可以保存任何类型的数据。也就是说,可以用数组的第一个位置保存字符串,用第二位置来保存数值,用第三个位置来保存对象,以此类推。而且ECMAScript数组

posted on 2016-07-26 14:31  前端园地  阅读(99)  评论(0)    收藏  举报