掌握JavaScript的基础知识

发表时间: 2019-01-10 01:21

1 JavaScript

JavaScript 是世界上最流行的脚本语言。 JavaScript 是属于 web 的语言,它适用于 PC、笔记本电脑、平板电脑和移动电话。 JavaScript 被设计为向 HTML 页面增加交互性。 许多 HTML 开发者都不是程序员,但是 JavaScript 却拥有非常简单的语法。

JavaScript对大小写敏感。

1.1 JavaScript的用法

HTML 中的脚本必须位于 <script> 与 </script> 标签之间。

脚本可被放置在 HTML 页面的 <body> 和 <head> 部分中。

Ø <script> 标签

如需在 HTML 页面中插入 JavaScript,请使用 <script> 标签。

<script> 和 </script> 会告诉 JavaScript 在何处开始和结束。

<script> 和 </script> 之间的代码行包含了 JavaScript:

那些老旧的实例可能会在 <script> 标签中使用 type="text/javascript"。现在已经不必这样做了。JavaScript 是所有现代浏览器以及 HTML5 中的默认脚本语言。

Ø <body> 中的 JavaScript

在本例中,JavaScript 会在页面加载时向 HTML 的 <body> 写文本:

1.2 JavaScript 数据类型

JavaScript 有多种数据类型:数字,字符串,数组,对象等等:

在 JavaScript 中有 5 种不同的数据类型:

l string

l number

l boolean

l object

l function

3 种对象类型:

l Object

l Date

l Array

2 个不包含任何值的数据类型:

l null

l undefined

你可以使用 typeof 操作符来查看 JavaScript 变量的数据类型。

1.3 JavaScript函数

我们把一个 JavaScript 函数放置到 HTML 页面的 <head> 部分:

我们把一个 JavaScript 函数放置到 HTML 页面的 <body> 部分:

也可以把脚本保存到外部文件中。外部文件通常包含被多个网页使用的代码。

外部 JavaScript 文件的文件扩展名是 .js。

如需使用外部文件,请在 <script> 标签的 "src" 属性中设置该 .js 文件:

1.4 JavaScript注释

双斜杠 // 后的内容将会被浏览器忽略。

1.5 JavaScript变量

编程语言中,变量用于存储数据值。

JavaScript 使用关键字 var 来定义变量, 使用等号来为变量赋值:

1.6 JavaScript操作符

1.7 JavaScript关键字

和其他任何编程语言一样,JavaScript 保留了一些标识符为自己所用。

JavaScript 保留了一些关键字,这些关键字在当前的语言版本中并没有使用,但在以后 JavaScript 扩展中会用到。

JavaScript 标识符必须以字母、下划线(_)或美元符($)开始。

后续的字符可以是字母、数字、下划线或美元符(数字是不允许作为首字符出现的,以便 JavaScript 可以轻易区分开标识符和数字)。

以下是 JavaScript 中最​​重要的保留字(按字母顺序):

1.8 JavaScript If...Else 语句

通常在写代码时,总是需要为不同的决定来执行不同的动作。可以在代码中使用条件语句来完成该任务。

在 JavaScript 中,我们可使用以下条件语句:

l if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码

l if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码

l JavaScript三目运算 - 当条件为true 时执行代码,当条件为 false 时执行其他代码

l if...else if....else 语句- 使用该语句来选择多个代码块之一来执行

l switch 语句 - 使用该语句来选择多个代码块之一来执行

1.9 JavaScript for循环

JavaScript 支持不同类型的循环:

l for - 循环代码块一定的次数

l for/in - 循环遍历对象的属性

l while - 当指定的条件为 true 时循环指定的代码块

l do/while - 同样当指定的条件为 true 时循环指定的代码块

1.10 JavaScript JSON

JSON 是用于存储和传输数据的格式。

JSON 通常用于服务端向网页传递数据 。

什么是 JSON?

l JSON 英文全称 JavaScript Object Notation

l JSON 是一种轻量级的数据交换格式。

l JSON是独立的语言 *

l JSON 易于理解。

注:JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本。文本可以被任何编程语言读取及作为数据格式传递。

以下 JSON 语法定义了 employees 对象: 3 条员工记录(对象)的数组:

{"employees":[

{"firstName":"John", "lastName":"Doe"},

{"firstName":"Anna","lastName":"Smith"},

{"firstName":"Peter", "lastName":"Jones"}

]}

JSON 语法规则:

l 数据为 键/值 对。

l 数据由逗号分隔。

l 大括号保存对象

l 方括号保存数组

JSON 字符串转换为 JavaScript 对象(两种方式):

首先,创建 JavaScript 字符串,字符串为 JSON 格式的数据:

var text = '{ "employees" : [' +

'{ "firstName":"John" , "lastName":"Doe" },' +

'{ "firstName":"Anna" , "lastName":"Smith" },' +

'{ "firstName":"Peter" , "lastName":"Jones" } ]}';

l 使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象:

var obj = JSON.parse(text);

l JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

var obj = eval ("(" + txt + ")");

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在小括号中,这样才能避免语法错误。

eval() 函数可编译并执行任何 JavaScript 代码。这隐藏了一个潜在的安全问题。

使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。JSON 解析器只能识别 JSON 文本,而不会编译脚本。而且 JSON 解析器的速度更快。

最后,在页面中使用新的 JavaScript 对象:

<p id="demo"></p>

<script>

document.getElementById("demo").innerHTML =

obj.employees[1].firstName + " " + obj.employees[1].lastName;

</script>

使用JSON.stringify方法Javascript对象转换为JSON字符串:

var str = {"name":"小牛学堂", "site":"http://www.edu360.cn"}

str_pretty1 = JSON.stringify(str)

alert(str_pretty1);

1.11 Javascript void

href="#"与href="javascript:void(0)"的区别:

l # 包含了一个位置信息,默认的锚是#top 也就是网页的上端。

l 而javascript:void(0), 仅仅表示一个死链接。

l 在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + id。

l 如果你要定义一个死链接请使用 javascript:void(0) 。

<a href="javascript:void(0);">点我没有反应的!</a>

<a href="#pos">点我定位到指定位置!</a>

<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>

<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>

<p id="pos">尾部定位点</p>

1.12 Javascript验证表单

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

表单数据经常需要使用 JavaScript 来验证其正确性:

l 验证表单数据是否为空?

l 验证输入是否是一个正确的email地址?

l 验证日期是否输入正确?

l 验证表单输入内容是否为数字型?

必填(或必选)项目

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

function validateForm()

{

var x=document.getElementById(“”).value;

if (x==null || x=="")

{

alert("姓名必须填写");

return false;

}

}

……

<form name="myForm" action="test.html" onsubmit="return validateForm()" method="post">

姓名: <input type="text" name="fname">

<input type="submit" value="提交">

</form>

E-mail 验证:xxxx@asd.cc

下面的函数检查输入的数据是否符合电子邮件地址的基本语法。

意思就是说,输入的数据必须包含 @ 符号和点号(.)。同时,@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号:

function validateForm(){

var x=document.forms["myForm"]["email"].value;

var atpos=x.indexOf("@");

var dotpos=x.lastIndexOf(".");

if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length){

alert("不是一个有效的 e-mail 地址");

return false;

}

}

……

<form name="myForm" action="test.html" onsubmit="return validateForm();" method="post">

Email: <input type="text" name="email">

<input type="submit" value="提交">

</form>

1.13 JavaScript正则表达式

正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

搜索模式可用于文本搜索和文本替换。

1) 什么是正则表达式?

正则表达式是由一个字符序列形成的搜索模式。

当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。

正则表达式可以是一个简单的字符,或一个更复杂的模式。

正则表达式可用于所有文本搜索和文本替换的操作。

2) 语法

/正则表达式主体/修饰符(可选)

3) 使用字符串方法

在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。

search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。

replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

function myFunction() {

var str = "My Test!";

// var n = str.search("Test");

var n = str.search(/test/i);

alert(n);

var str = "My Test";

var txt = str.replace(/test/i,"Javascript");

alert(txt);

}

4) 正则表达式修饰符

修饰符 可以在全局搜索中不区分大小写:

i执行对大小写不敏感的匹配。

g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

m执行多行匹配。

5) 正则表达式模式

l 方括号用于查找某个范围内的字符:

[abc]查找方括号之间的任何字符。

[0-9]查找任何从 0 至 9 的数字。

(x|y)查找任何以 | 分隔的选项。

l 元字符是拥有特殊含义的字符:

\d查找数字。

\s查找空白字符。

\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。

l 量词:

n+匹配任何包含至少一个 n 的字符串。

n*匹配任何包含零个或多个 n 的字符串。

n?匹配任何包含零个或一个 n 的字符串。

6) 使用 RegExp 对象

在 JavaScript 中,RegExp 对象是一个预定义了属性和方法的正则表达式对象。

test() 方法是一个正则表达式方法。

test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

Eg:

/\d/.test(“123”) 返回true。

/^1\d{10}$/

/^0\d{2,3}-?\d{7,8}$/

验证邮箱的正则表达式:

function isEmail(str){

var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;

return reg.test(str);

}

1.14 Javascript高级编程

1.14.1 Javascript对象

1) 创建 JavaScript 对象

通过 JavaScript,能够定义并创建自己的对象。

创建新对象有两种不同的方法:

l 定义并创建对象的实例

l 使用函数来定义对象,然后创建新的对象实例

var person=new Object();

person.firstname="John";

person.lastname="Doe";

person.age=50;

p={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};

2) 使用对象构造器

使用函数来构造对象:

function person(firstname,lastname,age,eyecolor){

this.firstname=firstname;

this.lastname=lastname;

this.age=age;

this.eyecolor=eyecolor;

}

var myFather=new person("John","Doe",50,"blue");

alert(myFather.firstname + " is " + myFather.age + " years old.");

在JavaScript中,this通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)。

1.14.2 Javascript Array(数组)对象

1) 什么是数组?

数组对象是使用单独的变量名来存储一系列的值。

2) 创建一个数组,

有三种方法, 下面代码定义了一个名为 myCars的数组对象:

1: 常规方式:

var myCars=new Array();

myCars[0]="Saab";

myCars[1]="Volvo";

myCars[2]="BMW";

2: 简洁方式:

var myCars=new Array("Saab","Volvo","BMW");

3: 字面:

var myCars=["Saab","Volvo","BMW"];

3) 访问数组

通过指定数组名以及索引号码,你可以访问某个特定的元素。

以下实例可以访问myCars数组的第一个值:

var name=myCars[0];

以下实例修改了数组 myCars 的第一个元素:

myCars[0]="Opel";

4) 在一个数组中你可以有不同的对象

所有的JavaScript变量都是对象。数组元素是对象。函数是对象。

因此,你可以在数组中有不同的变量类型。

可以在一个数组中包含对象元素、函数、数组:

myArray[0]=Date.now;

myArray[1]=myFunction;

myArray[2]=myCars;

数组方法和属性

使用数组对象预定义属性和方法:

var x=myCars.length // myCars 中元素的数量

var y=myCars.indexOf("Volvo") // "Volvo" 值的索引值

5) 数组常用方法

合并数组 - concat()

删除数组的最后一个元素 - pop()

数组的末尾添加新的元素 - push()

将一个数组中的元素的顺序反转排序 - reverse()

删除数组的第一个元素 - shift()

从一个数组中选择元素 - slice()

数组排序(按字母顺序升序)- sort()

数字排序(按数字顺序升序)- sort() eg:var arrs = [40,100,1,5,25,10]; arrs.sort(function(a,b){return a-b});

数字排序(按数字顺序降序)- sort() eg:var arrs = [40,100,1,5,25,10]; arrs.sort(function(a,b){return b-a});

转换数组到字符串 -toString()