目录
什么是JavaScript:
JavaScrpt,是一种直译式脚本语言,是一种动态类型,弱类型,基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,是浏览器的一部分,广泛用于客户端的脚本语言中,最早是在HTML(标准通用标记语言下的一个应用)网页上使用的,用于为HTML网页增加动态功能。目前JavaScript 被广泛用于Web应用开发,常用于为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。
JavaScript的特点:
JavaScript 具有以下四个方面的特点:
*是一种解释性脚本语言(代码不进行预编译),
*主要用于向HTML(标准通用标记语言下的一个应用)页面添加交互行为,
*可以直接嵌入HTML页面,但写成单独的JS文件有利于结构和行为的分离,
*跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows,Linux,Max,Android,iOS等)。
JavaScript的关键字:
break | else | new | var |
case | finally | return | void |
catch | for | switch | while |
continue | function | this | with |
default | if | throw | |
delete | in | try | |
do | instanceof | typeof |
JavaScript的变量:
在JavaScript中,变量是存储信息的容器,变量存在两种类型的值,即原始值和引用值。
*原始值:存储在栈中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。
*引用值:存储在堆中的对象,也就是说,存储在变量处的值是一个指针指向存储对象的内存处。
JavaScript的数据类型:
在JavaScript中,数据类型表示数据的类型,JavaScript语言的每一个值都属于某一种数据类型。JavaScript的数据主要分为以下两种。
*值类型(原始值):字符串(String),数字(Number),布尔(Boolean),对空(Null),未定义(Undefined),Symbol(ES6 引入了一种新的原始数据类型,表示独一无二的值)。
*引用数据类型(引用值):对象(Object),数组(Array),函数(Function)。
类型转换:
在JavaScript中,如果一个变量的类型不是想要的,那么可以通过类型转换实现目的,类型转换常用的有以下五种。
*Number(变量):将变量转化为数字类型。
*String(变量):将变量转化为字符串类型。
*Boolean(变量):将变量转化为布尔值类型。Boolean会将非零的数字转化为true,将零转为false。
*parseFloat(变量):将变量转化为浮点类型。
*parseInt(变量):将变量转化为整数类型。
代码演示和效果图如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript</title>
</head>
<body>
<script>
var a = '123';
var b = a+6;
document.write('没用Number转换前:'+b);
document.write('<br/>');
var c = Number(a) + 6;
document.write('用Number转换后:'+c);
document.write('<hr/>');
var x = 33;
var y = x + 66;
document.write('没用String转换前:'+y);
document.write('<br/>');
var m = String(x) + 66;
document.write('用String转换后:'+m);
document.write('<hr/>');
var t = 13;
var f = 0;
var b1 = Boolean(t);
var b2 = Boolean(f);
document.write('用Boolean转换后:t = '+ b1 +',f = '+b2);
</script>
</body>
</html>
JavaScript的运算符:
赋值运算符:
var s = "hello"; //将hello这个字符串赋值给变量s
算数运算符:
var a = 3 + 2; //加法
var b = 3 - 2; //减法
var c = 3 * 2; //乘法
var d = 3 / 2; //除法
var e = 3 * 2; //取余
比较运算符:
var a = 3;
var b = 2;
var c = a > b; //大于,结果为true
var d = a < b; //小于,结果为false
var e = a >= b; //大于或等于,结果为true
var f = a <= b; //小于或等于,结果为false
var g = a != b; //不等于,结果为true
var aa = '3'; //aa被赋值为字符串类型
var bb = 3; //bb被赋值为数字类型
var cc = aa == bb; //返回为true,两个等号表示只要值相同就可以相等,返回true
var dd = aa === bb;//返回为false,3个等号表示除值外必须类型也相同才能返回true
逻辑运算符:
var a = 3,b = 9,c = 7,d = 5;
//返回为false,&&表示前后两个表达式必须全为true,整个表达式才能返回true
var as = (a<b)&&(c<d);
//返回为true,||表示前后两个表达式只要有一个为true,整个表达式就能返回true
var bs = (a<b)||(c<d);
//返回为true,a>b返回为false,!表示取反,因此返回true
var cs = !(a>b);
分支循环:
if语句:
if条件语句表示假如的意思,在程序运行中提供判断的功能。
var a = 9,b = 17;
if(a>7){
document.write('a>b');
}else if(a==b){
document.write('a=b');
}else{
document.write('a<b');
}
switch选择语句:
switch选择语句表示多条件选择。
var day = new Date().getDay();
switch(day){
case 0;
x = "今天是周日";
break;
case 1;
x = "今天是周一";
break;
case 2;
x = "今天是周二";
break;
case 3;
x = "今天是周三";
break;
case 4;
x = "今天是周四";
break;
case 5;
x = "今天是周五";
break;
case 6;
x = "今天是周六";
break;
}
document.write(x);
for循环:
语法格式:
for(语句1;语句2;语句3){
被执行的代码块
}
*continue:越过本次循环,继续下一次循环。
*break:跳过整个循环,循环结束。
for in 循环:
var person = {id:1,name:"张三",age:20}; //定义一个对象
for (key in person){
document.write(key+":"+person[key]);
document.write('<br/>');
}
数组:
数组对象是使用单独的变量名存储一系列的值,可理解为一个容器装了一堆元素。JavaScript中数组包含的属性和方法如下表所示。
方法 | 描述 |
concat() | 连接两个或更多的数组,并返回结果 |
join() | 把数组的所有元素放入一个字符串,元素通过指定的分隔符进行分隔 |
pop() | 删除并返回数组的最后一个元素 |
posh() | 向数组的末尾添加一个或者更多元素,并返回新的长度 |
reverse() | 颠倒数组中元素的顺序 |
shift() | 删除并返回数组的第一个元素 |
slice() | 从某个已有的数组返回选定的元素 |
sort() | 对数组的元素进行排序 |
splice() | 删除元素,并向数组添加元素 |
toSoruce() | 返回该对象的源代码 |
数组的定义:
方法一:使用new关键字创建一个Array对象,可直接在内存中创建一个数组空间,然后向数组中添加元素。
var mycar = new Array();
//也可以使用一个整数自变量控制数组的容量
var mycars = new Array(3);
方法二:使用new关键字创建一个Array对象的同时为数组赋予n个初始值。
var mycar = new Array("Saab","Volvo","BMW");
方法三:不用new,直接用[]声明一个数组,同时可以直接赋予初始值,是最简便的一种声明方式。
var mycars = ["Saab","Volvo","BMW"];
遍历数组:
方法一:先声明数组的长度,然后使用for循环遍历整个数组。
var mycars = ["Saab","Volvo","BMW"];
var len = mycars.length; //获取数组长度
for(i=0;i<len;i++){
document.write(mycars[i]);
document.write('<br/>');
}
方法二:使用for...in遍历,无须获得数组长度。
var mycars = ["Saab","Volvo","BMW"];
for(key in mycars){
document.write(key+":"mycars[key]);
document.write('<br/>');
}
删除数组:
pop方法:从尾部删除,删除后元素从数组上剥离并返回。
var mycars = ["Saab","Volvo","BMW"];
var car = mycars.pop();
document.write(mycars);
document.write('<br/>');
document.write(car);
shift方法:从头部删除元素,从头部剥离并返回。
var mycars = ["Saab","Volvo","BMW"];
var car = mycars.shift(); //从头部删除
document.write(car);
document.write('<br/>');
document.write(car);
插入元素:
unshift方法:从头部插入,语法为数组.unshift(元素1)。
var mycars = ["Saab","Volvo","BMW"];
//从数组头部插入一个新的元素,返回新的数组长度
var newlen = mycars.unshift("奔驰");
document.write(newlen);
document.write('<br/>');
document.write(mycars);
splice方法:从指定位置插入指定个数的元素。
var mycars = ["Saab","Volvo","BMW"];
mycars.splice(1,0,"宝马","奇瑞","奔驰");//从索引1位置删除0个并插入3个元素
document.write(mycars);
合并元素:
JavaScript 为数组提供 concat 方法将多个数组连接成一个数组。
var arr = [1,3,5];
var arr1 = [2,4,6];
var arr2 = [7,8,9];
var newArr = arr.concat(arr1,arr2);//合并3个数组
document.write(newArr); //输出
数组转字符串:
在JavaScript 中,为数组 join 方法将数组的元素合并成一个用指定分割符合并器来的字符串。
var mycars = ['宝马','奔驰','奇瑞','标致','捷达'];
var cars = mycars.join("|");
document.write(cars);
数组元素倒序:
在JavaScript 中,调用数组的 reverse 方法可以将数组中的元素倒序排列。
var mycars = ['宝马','奔驰','奇瑞','标致','捷达'];
mycars.reverse(); //数组倒序
document.write(mycars);
对象:
Object(对象)是一个以键值对形式存储属性的集合,每个属性有特定的名称,以及与名称相对应的值。
对象的声明:
方法一:new Object(): 声明一个类,然后使用new关键字创建一个拥有独立内存区域和指向原型的指针的对象。
var User = function(id,name){
this.id = id;
this.name = name;
}
var user1 = new User(1,"张三");
document.write(user1.name);
document.write("<br/>");
var user2 = new User(2,"李四");
document.write(user2.name);
方法二:{}:对象直接申明法,利用现有值看,直接实例化一个对象。
var user1 = {id:1,name:"张三"};
var user2 = Object.ceate({id:2,name:"李四"});
document.write(user1.name);
document.write("<br/>");
document.write(user2.name);
对象的属性:
添加属性:为已存在的对象添加属性。
var user = {}; //声明一个对象
user.id = 1; //为对象添加属性
user["name"]="张三"; //既可以用点访问属性,也可以用字符串作为键访问属性
user.age = 20;
user["career"] = "学生";
document.write(user.name);
document.write("<br/>");
document.write(user["age"]):
删除属性:删除已有的属性。
var user = {}; //声明一个对象
user.id = 1; //为对象添加属性
user["name"]="张三"; //既可以用点访问属性,也可以用字符串作为键访问属性
user.age = 20;
user["career"] = "学生";
delete user.name; //删除对象的name属性
document.write(user.name);
document.write("<br/>");
document.write(user["age"]):
检测属性:
var user = {}; //声明一个对象
user.id = 1; //为对象添加属性
user["name"]="张三"; //既可以用点访问属性,也可以用字符串作为键访问属性
user.age = 20;
user["career"] = "学生";
if('career' in user){
alert("有career属性");
}else{
alert("无career属性");
}
函数:
函数是一组延迟动作集的定义,可以通过事件触发或者在其他脚本中进行调用。
function 函数名 (参数){
函数体
return 返回值;
}
函数的声明:
function fun1(){
document.write("我是函数fun1");
documten.write("<br/>");
}
fun1();
var fun2 = function(){
document.write("我是函数fun2");
documten.write("<br/>");
}
fun2();
var fun3 = function(){
document.write("我是函数fun3");
};
函数的调用:
//传值调用
function fun1(str){
str = "你好";
}
var a = "hello";
fun1(a);
document.write("传值调用,a="+a);
document.write("<br/>");
//传值调用
function fun2(person){
person.name = "李四";
}
var b = {name:"张三");
fun2(b);
doucment.write("传址调用,person.name="+b.name);