JavaScript 是脚本语言
JavaScript 是一种轻量级的编程语言。
JavaScript 是可插入 HTML 页面的编程代码。
JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
一些主要的内容:
写入 HTML 输出:
JavaScript 能够直接写入 HTML 输出流中:
对事件作出反应:
对事件作出反应
单击按钮弹出welcome
改变html内容:
我的第一段 JavaScript
JavaScript 能改变 HTML 元素的内容。
改变HTML样式:
改变html样式
更改样式之前
验证输入:
验证输入的内容是否为number
请输入数字。如果输入值不是数字,浏览器会弹出提示框。
JavaScript的使用:
HTML 中的脚本必须位于 标签之间。脚本可被放置在 HTML 页面的 和 部分中。
会告诉 JavaScript 在何处开始和结束。
之间的代码行包含了 JavaScript:
中的 JavaScript:
JavaScript 会在页面加载时向 HTML 的
写文本:
JavaScript 能够直接写入 HTML 输出流中:
上面例子中的 JavaScript 语句,会在页面加载时执行。通常,我们需要在某个事件发生时执行代码,比如当用户点击按钮时。如果我们把 JavaScript 代码放入函数中,就可以在事件发生时调用该函数。
中的 JavaScript 函数:
我们把一个 JavaScript 函数放置到 HTML 页面的
部分。该函数会在点击按钮时被调用:
点击下面按钮会变哟!
中的 JavaScript 函数:
我们把一个 JavaScript 函数放置到 HTML 页面的
部分。该函数会在点击按钮时被调用:
单击此下面按钮会变哟!
提示:我们把 JavaScript 放到了页面代码的底部,这样就可以确保在
元素创建之后再执行脚本。
外部的 JavaScript:
也可以把脚本保存到外部文件中。外部文件通常包含被多个网页使用的代码。
外部 JavaScript 文件的文件扩展名是 .js。
如需使用外部文件,请在 //导入js目录下的myScript.js文件
JavaScript输出:
JavaScript 通常用于操作 HTML 元素。
操作 HTML 元素
如需从 JavaScript 访问某个 HTML 元素,您可以使用 document.getElementById(id) 方法。
请使用 "id" 属性来标识 HTML 元素:
123
警告
请使用 document.write() 仅仅向文档输出写内容。
如果在文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖:
123
456
分号 ;
分号用于分隔 JavaScript 语句。通常我们在每条可执行的语句结尾添加分号。使用分号的另一用处是在一行中编写多条语句。
JavaScript 代码块
JavaScript 语句通过代码块的形式进行组合。
块由左花括号开始,由右花括号结束。
块的作用是使语句序列一起执行。
JavaScript 函数是将语句组合在块中的典型例子。
下面的例子将运行可操作两个 HTML 元素的函数:
JavaScript 对大小写敏感。
JavaScript 对大小写是敏感的。
当编写 JavaScript 语句时,请留意是否关闭大小写切换键。
函数 getElementById 与 getElementbyID 是不同的。
同样,变量 myVariable 与 MyVariable 也是不同的。
注释:
单行注释:
// 这是单行注释
多行注释:
/*
这是
多行
注释
*/
变量是储存的容器:
定义变量:
var x = 2;
var y = 3;
var z = x + y;
document.write(x,",",y,",",z);
在代数中,我们使用字母(比如 x)来保存值(比如 2),通过上面的表达式 z=x+y,我们能够计算出 z 的值为 5、
JavaScript 语句和 JavaScript 变量都对大小写敏感。
声明(创建) JavaScript 变量
在 JavaScript 中创建变量通常称为“声明”变量。
我们使用 var 关键词来声明变量:
var carname;
变量声明之后,该变量是空的(它没有值)。
如需向变量赋值,请使用等号:
carname = "Volvo";
当然,你也可以在声明变量时对其赋值:
var carname = "Volvo";
在下面的例子中,我们创建了名为 carname 的变量,并向其赋值 "Volvo",然后把它放入 id="demo" 的 HTML 段落中:
一条语句,声明多个变量:
var name = "smelond", age = 16, job = "Student";
当然,也可以横跨多行:
var name = "smelond",
age = 16,
job = "Student";
Value = undefined
在计算机程序中,经常会声明无值得变量。未使用值来声明的变量,其值实际上是undefined
如果只选一下语句,变量carname的值将是undefined:
var carname;
重新声明JavaScript变量:
如果重新声明JavaScript变量,该变量的值不会丢失:
在以下两条语句执行后,变量carname的值依然是“Volvo”
var carname = "Volvo";
var carname;
字符串、数字、布尔、数组、对象、Null、Undefined
JavaScript 拥有动态类型
JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:
var x // x 为 undefined
var x = 6; // x 为数字
var x = "Bill"; // x 为字符串
JavaScript 字符串
字符串是存储字符(比如 "Bill Gates")的变量。
字符串可以是引号中的任意文本。您可以使用单引号或双引号:
var carname1="Bill Gates";
var carname2='Bill Gates';
var answer1="Nice to meet you!";
var answer2="He is called 'Bill'";
var answer3='He is called "Bill"';
document.write(carname1 + "
") //Bill Gates
document.write(carname2 + "
") //Bill Gates
document.write(answer1 + "
") //Nice to meet you!
document.write(answer2 + "
") //He is called 'Bill'
document.write(answer3 + "
") //He is called "Bill"
JavaScript 数字
JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:
var x1=36.00;
var x2=36;
var y=123e5;
var z=123e-5;
document.write(x1 + "
") //36
document.write(x2 + "
") //36
document.write(y + "
") //12300000
document.write(z + "
") //0.00123
JavaScript 布尔
布尔(逻辑)只能有两个值:true 或 false。
JavaScript 数组:
下面的代码创建名为 cars 的数组:
var cars = new Array();
cars[0] = "Audi";
cars[1] = "BMW";
cars[2] = "Volvo";
或者:
var cars = new Array("Audi", "BWM", "Volvo");
实例:
var cars = new Array();
cars[0] = "Audi";
cars[1] = "BMW";
cars[2] = "Volvo";
for (var i=0;i"); //每次循环输出cars,cars[0]就表示Audi,[2]表示BMW。。。
}
JavaScript 对象
对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义(有点像python里面的字典)。属性由逗号分隔:
声明:
var person = {username:"smelond", age:16, id:1};
当然,也可以横跨多行:
var person = {
username : "smelond",
age : 16,
id : 1
};
实例:
var person = {username:"smelond", age:16, id:1};
document.write(person.username+ "
"); //smelond
document.write(person["username"] + "
"); //smelond
document.write(person.age+ "
"); //16
document.write(person["age"] + "
"); //16
document.write(person.id+ "
"); //1
document.write(person["id"] + "
"); //1
Undefined 和 Null
Undefined 这个值表示变量不含有值。
可以通过将变量的值设置为 null 来清空变量。
var person;
var car="Volvo";
document.write(person + "
"); //undefined
document.write(car + "
"); //Volvo
var car=null
document.write(car + "
"); //null
声明变量类型
当您声明新变量时,可以使用关键词 "new" 来声明其类型:
JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象。
var carname=new String;
var x= new Number;
var y= new Boolean;
var cars= new Array;
var person= new Object;
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
JavaScript 函数语法
函数就是包裹在花括号中的代码块,前面使用了关键词 function:
function functionname() {
执行的代码
}
当调用该函数时,会执行函数内的代码。
可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。
提示:JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。
调用带参数的函数
在调用函数时,您可以向其传递值,这些值被称为参数。
这些参数可以在函数中使用。您可以发送任意多的参数,由逗号 (,) 分隔:
functionname(argument1,argument2)
当您声明函数时,请把参数作为变量来声明:
function myFunction(var1,var2) {
这里是要执行的代码
}
例子:
上面的函数会当按钮被点击时提示:
你好:smelond
你的年龄:16
带有返回值的函数
有时,我们会希望函数将值返回调用它的地方。
通过使用 return 语句就可以实现。在使用 return 语句时,函数会停止执行,并返回指定的值。
function myFunction(){
var x=5;
return x;
}
上面的返回值为5
函数调用将被返回值取代:
var myVar=myFunction();
myVar 变量的值是 5,也就是函数 "myFunction()" 所返回的值。
即使不把它保存为变量,您也可以使用返回值:
document.getElementById("demo").innerHTML=myFunction();
"demo" 元素的 innerHTML 将成为 5,也就是函数 "myFunction()" 所返回的值。
计算两个数字的乘积,并返回结果:
function myFunction(a,b) {
return a*b;
}
document.getElementById("demo").innerHTML=myFunction(4,3);
demo元素的innerHTML的值将是:12
在您仅仅希望退出函数时 ,也可使用 return 语句。返回值是可选的:
function myFunction(a,b){
if (a>b){
return;
}
x=a+b
}
如果 a 大于 b,则上面的代码将退出函数,并不会计算 a 和 b 的总和。
局部 JavaScript 变量
在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。
您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。
只要函数运行完毕,本地变量就会被删除。
全局 JavaScript 变量
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
JavaScript 变量的生存期
JavaScript 变量的生命期从它们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。
向未声明的 JavaScript 变量来分配值
如果您把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。
这条语句:
carname="Volvo";
将声明一个全局变量 carname,即使它在函数内执行。
JavaScript 运算符
运算符 = 用于赋值。
运算符 + 用于加值。
JavaScript 算术运算符
算术运算符用于执行变量与/或值之间的算术运算。
给定 y=5,下面的表格解释了这些算术运算符:
JavaScript 赋值运算符
赋值运算符用于给 JavaScript 变量赋值。
给定 x=10 和 y=5,下面的表格解释了赋值运算符:
用于字符串的 + 运算符
+ 运算符用于把文本值或字符串变量加起来(连接起来)。
如需把两个或多个字符串变量连接起来,请使用 + 运算符。
txt1="What a very";
txt2="nice day";
txt3=txt1+txt2;
在以上语句执行后,变量 txt3 包含的值是 "What a verynice day"。
要想在两个字符串之间增加空格,需要把空格插入一个字符串之中:
txt1="What a very ";
txt2="nice day";
txt3=txt1+txt2;
或者把空格插入表达式中:
txt1="What a very";
txt2="nice day";
txt3=txt1+" "+txt2;
在以上语句执行后,变量 txt3 包含的值是:
"What a very nice day"
x=5+5;
document.write(x);
document.write("
"); //10
x="5"+"5";
document.write(x);
document.write("
"); //55
x=5+"5";
document.write(x);
document.write("
"); //55
x="5"+5;
document.write(x);
document.write("
"); //55
规则是:如果把数字与字符串相加,结果将成为字符串。
JavaScript 比较和逻辑运算符
比较和逻辑运算符用于测试 true 或 false。
比较运算符
比较运算符在逻辑语句中使用,以测定变量或值是否相等。
给定 x=5,下面的表格解释了比较运算符:
如何使用
可以在条件语句中使用比较运算符对值进行比较,然后根据结果来采取行动:
if (age<16) document.write("Too young");
逻辑运算符
逻辑运算符用于测定变量或值之间的逻辑。
给定 x=6 以及 y=3,下表解释了逻辑运算符:
条件运算符
JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符。
语法
variablename=(condition)?value1:value2
例子
greeting=(visitor=="PRES")?"Dear President ":"Dear ";
如果变量 visitor 中的值是 "PRES",则向变量 greeting 赋值 "Dear President ",否则赋值 "Dear"。
JavaScript If...else 语句:
条件语句用于基于不同的条件来执行不同的动作。
条件语句
通常在写代码时,您总是需要为不同的决定来执行不同的动作。您可以在代码中使用条件语句来完成该任务。
在 JavaScript 中,我们可使用以下条件语句:
- if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
- if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
- if...else if....else 语句 - 使用该语句来选择多个代码块之一来执行
- switch 语句 - 使用该语句来选择多个代码块之一来执行
If 语句
只有当指定条件为 true 时,该语句才会执行代码。
语法
if (条件){
只有当条件为 true 时执行的代码
}
实例
当时间小于 20:00 时,生成一个“Good day”问候:
If...else 语句
请使用 if....else 语句在条件为 true 时执行代码,在条件为 false 时执行其他代码。
语法
if (条件){
当条件为 true 时执行的代码
}else{
当条件不为 true 时执行的代码
}
If...else if...else 语句
使用 if....else if...else 语句来选择多个代码块之一来执行。
语法
if (条件 1){
当条件 1 为 true 时执行的代码
}
else if (条件 2){
当条件 2 为 true 时执行的代码
}
else{
当条件 1 和 条件 2 都不为 true 时执行的代码
}
Switch 语句
switch 语句用于基于不同的条件来执行不同的动作。
JavaScript Switch 语句
请使用 switch 语句来选择要执行的多个代码块之一。
语法
switch(n){
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
n 与 case 1 和 case 2 不同时执行的代码
}
工作原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。
显示今日的周名称。请注意 Sunday=0, Monday=1, Tuesday=2, 等等:
default 关键词
请使用 default 关键词来规定匹配不存在时做的事情:
实例
如果今天不是周六或周日,则会输出默认的消息:
For 循环
循环可以将代码块执行指定的次数。
JavaScript 循环
如果您希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的。
我们可以这样输出数组的值:
document.write(cars[0] + "
");
document.write(cars[1] + "
");
document.write(cars[2] + "
");
document.write(cars[3] + "
");
document.write(cars[4] + "
");
document.write(cars[5] + "
");
不过通常我们这样写:
for (var i=0;i");
}
不同类型的循环
JavaScript 支持不同类型的循环:
- for - 循环代码块一定的次数
- for/in - 循环遍历对象的属性
- while - 当指定的条件为 true 时循环指定的代码块
- do/while - 同样当指定的条件为 true 时循环指定的代码块
For 循环
for 循环是您在希望创建循环时常会用到的工具。
下面是 for 循环的语法:
for (语句 1; 语句 2; 语句 3) {
被执行的代码块
}
语句 1 在循环(代码块)开始前执行
语句 2 定义运行循环(代码块)的条件
语句 3 在循环(代码块)已被执行之后执行
语句 1
通常我们会使用语句 1 初始化循环中所用的变量 (var i=0)。
语句 1 是可选的,也就是说不使用语句 1 也可以。
您可以在语句 1 中初始化任意(或者多个)值:
实例:
同时您还可以省略语句 1(比如在循环开始前已经设置了值时):
语句 2
通常语句 2 用于评估初始变量的条件。
语句 2 同样是可选的。
如果语句 2 返回 true,则循环再次开始,如果返回 false,则循环将结束。
提示:如果您省略了语句 2,那么必须在循环内提供 break。否则循环就无法停下来。这样有可能令浏览器崩溃。
语句 3
通常语句 3 会增加初始变量的值。
语句 3 也是可选的。
语句 3 有多种用法。增量可以是负数 (i--),或者更大 (i=i+15)。
语句 3 也可以省略(比如当循环内部有相应的代码时):
For/In 循环
JavaScript for/in 语句循环遍历对象的属性:
While 循环
只要指定条件为 true,循环就可以一直执行代码。
While 循环会在指定条件为真时循环执行代码块。
语法
while (条件){
需要执行的代码
}
本例中的循环将继续运行,只要变量 i 小于 5:
do/while 循环
do/while 循环是 while 循环的变体。该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环。
语法
do{
需要执行的代码
}
while (条件);
下面的例子使用 do/while 循环。该循环至少会执行一次,即使条件是 false,隐藏代码块会在条件被测试前执行:
比较 for 和 while
for 语句实例
本例中的循环使用 for 循环来显示 cars 数组中的所有值:
while 语句实例
本例中的循环使用使用 while 循环来显示 cars 数组中的所有值:
Break 和 Continue 语句
break 语句用于跳出循环。
continue 用于跳过循环中的一个迭代。
Break 语句
在上面的switch语句中我们已经用过break语句了。
break 语句可用于跳出循环。
break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话):
由于这个 if 语句只有一行代码,所以可以省略花括号:
if (i == 3) break;
Continue 语句
continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。
该例子跳过了值 3:
JavaScript 标签
在上面的switch中农我们看到的,可以对 JavaScript 语句进行标记。
如需标记 JavaScript 语句,请在语句之前加上冒号:
break 和 continue 语句仅仅是能够跳出代码块的语句。
语法
break labelname;
continue labelname;
continue 语句(带有或不带标签引用)只能用在循环中。
break 语句(不带标签引用),只能用在循环或 switch 中。
通过标签引用,break 语句可用于跳出任何 JavaScript 代码块:
错误 - Throw、Try 和 Catch
- try 语句测试代码块的错误。
- catch 语句处理错误。
- throw 语句创建自定义错误。
错误一定会发生
当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错误:
可能是语法错误,通常是程序员造成的编码错误或错别字。
可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。
可能是由于来自服务器或用户的错误输出而导致的错误。
当然,也可能是由于许多其他不可预知的因素。
JavaScript 抛出错误
当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。
描述这种情况的技术术语是:JavaScript 将抛出一个错误。
JavaScript 测试和捕捉
try 语句允许我们定义在执行时进行错误测试的代码块。
catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。
JavaScript 语句 try 和 catch 是成对出现的。
语法
try{
//在这里运行代码
}
catch(err){
//在这里处理错误
}
实例
在下面的例子中,我们故意在 try 块的代码中写了一个错字。
catch 块会捕捉到 try 块中的错误,并执行代码来处理它。
Throw 语句
throw 语句允许我们创建自定义错误。
正确的技术术语是:创建或抛出异常(exception)。
如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。
语法
throw exception
异常可以是 JavaScript 字符串、数字、逻辑值或对象。
实例
本例检测输入变量的值。如果值是错误的,会抛出一个异常(错误)。catch 会捕捉到这个错误,并显示一段自定义的错误消息:
请输入 5 到 10 之间的数字: