您的位置:首页 > Web前端 > JavaScript

JavaScript学习

2017-08-18 16:41 141 查看
JavaScript是Netscape公司开发的一种基于客户浏览器,基于面向对象,事件驱动式的脚本语言。

JavaScript是属于web语言,它适用于PC,笔记本电脑,平板电脑和移动电话

JavaScript特点:

1. JavaScript是一种解释性脚本语言

2. JavaScript是基于对象的脚本编程语言

3. 简单性

4. 安全性

5. 动态性

6. 跨平台性

JavaScript作用:

交互式操作,表单验证,网页特效,web游戏,服务器脚本开发

在html页面中嵌入JavaScript的代码有两种方法:

1. 使用JavaScript:前缀构建执行JavaScript代码

2. 使用<scrip…/>标签来包含JavaScript代码

<body>
<!--第一种方法-->
<a href="javascript:alert('使用前缀运行JavaScript');">
运行JavaScript
</a>
<!--第二种方法-->
<script type="text/javascript">
alert("直接运行的JavaScript")
</script>
</body>


但这两种方法不能做到JavaScript和HTML文件进行有效的分离,因此

3. 导入外部的JavaScript文件

可以将JavaScript脚本单独保存到一个*.js文件,HTML页面导入该 .js文件即可

导入语法:

<script src="outer.js" type="text/javascript">
</script>


用方法一写一个简单的JavaScript

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>javascript</title>
</head>
<body>
<a href="javascript:alert('hello javascript');">
运行JavaScript
</a>
</body>
</html>




用方法二

<head>
<script type="text/javascript">
alter("hello javascript");
</script>
</head>


用方法三

js文件

alter("hello javascript");


HTML文件

<head>
<script src="1.js" type="text/javascript"></script>
</head>


JavaScript基础语法:

JavaScript是弱类型脚本语言,使用变量之前,可以无需定义,当使用某个变量的时候直接使用即可,主要有以下两种定义:

1. 隐式定义:直接给变量赋值

temp="hello";
alert(temp);


显示定义:使用var关键字定义变量

var temp;
temp="hello"; alert(temp);


变量名称遵循规则:

1. 首字母必须是字母,下划线,或者$

2. 不能使用关键字

3. 对大小写敏感

JavaScript常用数据类型:

1. 数值类型:整数,浮点数

2. 布尔类型

3. 字符串类型 :单引号或双引号括起来

4. 未定义类型:专门用来确定一个已经创建但是没有初值的变量

5. null

类型转换:

通过+号或者toString()方法将数值转换成字符串

通过parseInt()将字符串转换为整型

通过parseFloat()将字符串转换为浮点型

parseInt(“hello”) —- 输出NaN(not a number)

parseFloat(“36chen”) —- 输出36 (后面字母忽略)

parseFloat(435.34.564)—-输出435.34

JavaScript中字符串常用操作方法:



JavaScript中的字符串可以用单引号括起来

JavaScript中比较两个字符序列是否相等使用==即可,无需使用equals()

正则表达式:

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符,及这些特定字符的组合,组成一个“规律字符串“,用来表达对字符串的一种过滤逻辑

使用正则表达式目的:

给定的字符串是否符合正则表达式的过滤逻辑(“匹配”)

可以通过正则表达式,从字符串中获取我们想要的特定部分·

特点:

灵活性,逻辑性和功能性非常强

可以迅速的用极简单的方式达到字符串的复杂控制

创建正则表达式的语法:

第一种:

var reg=/pattern/;


第二种:

var reg=new RegExp(pattern);


RegExp对象的常用方法:

exec(str) : 检索字符串中指定的值。返回找到的值,并确定其位置

text(str) : 检索字符串中是否有满足条件的值。返回true或false

第一种实例:

<script>
var str="Brainy is the new sexy";
var reg=/new/;
alert(reg.exec(str));
</script>




第二种:

<script>
var str="Brainy is the new sexy";
var reg=new RegExp('new');
alert(reg.exec(str));
</script>


正则表达式所支持的常用通配符:



var str="hello123"
var reg=/\d/
alert(reg.test(str));




var str="helloworld"
var reg=/\s/;
alert(reg.test(str));




var str="helloworld"
var reg=/\bh/;  //是否以h开头
alert(reg.test(str));


正则表达式所支持的常用通配符:



小例子:

var str="hello world"
var reg=/[ha]/;  //有h无a
alert(reg.test(str));


返回true

var str="123A"
var reg=/[0-9]/;
alert(reg.test(str));


返回true

var str="AAA"
var reg=/[A-z]/;
alert(reg.test(str));


返回true

var str="hello world"
var reg=/(red|hello|blue)/;
alert(reg.test(str));


返回true

正则表达式量词:



小例子:

var str="hello world"
var reg=/e+/;  //匹配至少包含一个e的字符串
alert(reg.test(str));


true

var str="helloo"
var reg=/o{2}/;  //匹配包含2个o的序列字符串
alert(reg.test(str));


true

var str="okklo"
var reg=/o{2}/;  //匹配包含2个o的序列字符串
alert(reg.test(str));


false

必须是两个o连在一起的序列

var str="hello"
var reg=/^h/;  //以h开头
alert(reg.test(str));


true

正则表达式的修饰符:



小例子:

var str="BBS"
var reg=/b/i;  //i-对大小写不敏感
alert(reg.test(str));


true

var str="BSADRGBSF"
var reg=/B/g;
alert(reg.test(str));
alert(reg.test(str));
alert(reg.test(str));


若不写g,则始终查到的是第一个B,不会继续往下查找,不管输出几次alert都是true

但写了g以后,执行全局匹配,字符串只有两个B,因此输出第三个alert后,返回的是false

var str="test\nbbs";
var reg=/^b/m;
alert(reg.test(str));


若没有m则返回false

加了m后,/n换行,m会换行匹配,因此返回true

验证E-mail地址:

var str="123abc@qq.com";
var reg=/^[0-9a-zA-Z_-]+@[0-9a-zA-Z_-]+\.(com|cn|org)/;
alert(reg.test(str));


reg表示@前面只要是0-9数字,a-z,A-Z字母都行,@后也是,.不能直接表示,必须用转义字符.表示,.后面com,cn,org都行

JavaScript数组

数组定义:

var arr1=[1,2,3];    //定义时直接赋值

var arr2=[];        //定义一个空数组

var arr3=new Array();  //定义一个数组并通过索引来赋值
arr3[0]=1;
arr3[3]="abc";


JavaScript为数组提供了一个length属性来得到数组的长度

数组特点:

数组长度可变,总长度等于数组的最大索引值+1

同一数组中的元素类型可以互不相同

当访问未赋值的数组元素时,该元素为undefined,不会数组越界

小例子:

var arr=[1,"abc",true];
for(i=0;i<arr.length;i++){
document.write(arr[i]+"<br/>");  //document.write()常用来网页向文档中输出内容。
}




var arr=[];
arr[0]=1;
arr[2]="abc";
document.write(arr[0]+"<br/>");
document.write(arr[1]+"<br/>");
document.write(arr[2]+"<br/>");




JavaScript中常用运算符



== 和 ===:

=== 叫严格等于

如:“10”和10,若用==比较,返回true,若用===比较,则认为左边是字符串右边是数字,返回false

小例子:

逗号运算符

var a,b,c,d;
a=(b=5,c=2,d=3);
alert(a);


返回 3

因为逗号运算符返回最右边的一个值,因此a=3

var a,b,c,d;
a=void(b=5,c=2,d=3);
alert(a);


返回undefined

void强调右边不会给任何值给a

var a=[1,2];
alert(a instanceof Array);  //a是不是一个数组


返回 true

流程控制语句

分支语句:

if 和 switch

循环语句:

while , do while ,for ,for in

var arr=new Array(5);
arr[0]=1;
arr[2]=3;
arr[3]="true";
arr[5]=true;
for(var index in arr){
document.write(index+"<br/>");
}


JavaScript函数

命名函数

<script typr="text/javascript">
function 函数名(参数列表){
要执行的语句块;
}
</script>


匿名函数

<script typr="text/javascript">
function (参数列表){
要执行的语句块;
}
</script>


如:

var f=function(name){
alert("姓名"+name);
}

f(张三);


使用Function类构造匿名函数

new function(参数列表,函数执行体);


如:

var f=new Function('name','age',"alert(....);");


小例子:

var f=function(name,age){
alert("名字"+name+",年龄"+age);
}
f('张三',40);


函数的形参不用申明类型,也不用var

大多数优秀的JavaScript框架都使用第二种“匿名函数”语法来定义函数,它的可读性好

函数的返回值

JavaScript中的函数没有声明返回类型,当函数想要返回值的时候直接加上return值语句即可,加入不加表示无返回值

局部变量和局部函数

变量有局部变量和全局变量之分。直接定义的变量是全局变量,在函数中定义的变量称为局部变量,局部变量只在函数内有效,如果全局变量和局部变量使用相同的变量名,则局部变量将覆盖全局变量

局部函数是在函数中定义的,外部函数可以直接调用其内部的函数,在外部函数外直接调用内部函数是不可以的,所以只有当外部函数被调用时,内部局部函数才会被执行

调用函数的方式

直接调用函数

对象.函数的引用;

//当声明的一个函数没有指明分配给哪个对象使用的时候,默认分配给Windows对像

例如:

function show(name,age){
alert(name,age);
}
window.show("张三",12);


以call方法调用函数

函数引用.call(调用者,参数1,参数2…..);

例如:

function show(name,age){
alert(name,age);
}
show.call(window,"张三",12);


以apply方法调用函数

函数引用.apply(调用者,argument);

//argument相当于是数组,用来存放多个参数。和call调用方法类似

例如:

function show(name,age){
alert(name,age);
}
show.apply(window,["张三",12]);


创造后两种调用方法的作用:

例如:

function show(arr,func){    //arr是数据,func是函数
func.call(window,arr);
}
show([1,2,3,4],function(arr){
for(i in arr){
document.write(arr[i]+"<br/>");
}
})


常用内置对象

对象是JavaScript的特性之一,这里介绍Date和Math
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: