目录
概念:一门客户端脚本语言
运行在客户端浏览器的,每一个浏览器都有JavaScript的解析引擎
脚本语言:不需要编译,直接就可以被浏览器解析执行。
功能:
可以用来增强用户和html页面的交互过程,用来控制html元素,让页面有动态效果。
发展史:
1992年,Nombase公司,开发出客户端脚本语言,用于表单的校验。命名为C--,后来更名为:ScriptEase
1995年,Netscape(网景)公司,开发了一门客户端脚本语言:LiveScript。后来,请来了Sun公司的专家,修改liveScript去命名为JavaScript。
1996年,微软抄袭了JavaScript开发出Jscript语言。
1997年,ECMA(欧洲计算机制造商协会),起名为ECMAScript,就是所有客户端脚本语言的标准。
JavaScript=ECMAScript+JavaScript自己特有的东西(BOM+DOM)
ECMAScript:客户端脚本语言的标准
1.基础语法
1.与html结合方式
1.内部JS
定义<script>,标签内容就是js代码
2.外部JS
定义<script>,通过src属性引入外部js文件
注意:
1.<script>可以定义在页面的任何地方,但是定义的地方会影响执行顺序
2.<script>可以定义多个
2.注释:
同java注释形式相同
3.数据类型
1.原始数据类型(基本数据类型)
1.number数字:整数/小数/NaN(not a number 一个不是数字的数字类型)
2.string:字符串。字符/字符串 "abc" "a" 'abc'
3.boolean:true和false
4.null:一个对象为空的占位符
5.undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefined
2.引用数据类型:对象
var num=1;
var num2=1.2;
var num3=NaN;
//输出到页面上
document.write(num+"<br>");
document.write(num2+"<br>");
document.write(num3+"<br>");
//定义string类型
var str="abc";
var str2='edf';
document.write(str+"<br>");
document.write(str2+"<br>");
//定义boolean
var flag=true;
document.write(flag+"<br>");
var obj=null;
var obj2=undefined;
var obj3;
document.write(obj+"<br>");
document.write(obj2+"<br>");
document.write(obj3+"<br>");
4.变量
变量:一小块存储数据据的内存空间
java语言是强类型语言,而JavaScript语言是弱类型语言
强类型:在开辟空间时,定义了空间来存储数据的数据类型,只能存储固定类型的数据
弱类型:在开辟存储空间时,不定义空间将来的存储数据类型,可以放任意类型的数据
语法:
var 变量名=初始化的值;
5.运算符
1.一元运算符:只有一个运算数的运算符
++;--;+
2.算术运算符
+;-*;/;%
3.赋值运算符
=;+=;-=
4.比较运算符
>;<;===(全等于)
5.逻辑运算符
&&
||
!
其他类型转boolean
1.number:0或NAN为假,非0为真
2.string:除了空字符串,其他都是true
3.null&undefine:都是false
4.对象:都是true
6.三元运算符
?:表达式
6.流程控制语句
1.if...else...
2.switch
在java中,switch语句可以接受的数据类型为byte,int,short,char,枚举类型
在js中,switch可以接受任意数据类型
3.while
4.do...while
5.for
7.JS特殊语法:
1.语句以分号结尾,如果一行只有一条语句,则分号可以省略
2.变量的定义使用var关键字,也可以不使用
用:定义的变量是局部变量
不用:定义的变量是全局变量
8.99乘法表
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
td{
border: 1px solid;
}
</style>
<script>
document.write("<table border='1' align='center'>");
//1.完成基本for循环嵌套
for(var i=1;i<=9;i++){
document.write("<tr>");
for(var j=1;j<=i;j++){
//输出
document.write("<td>")
document.write(i+"*"+j+"="+(i*j)+" ");
document.write("</td>")
}
//输出换行
// document.write("<br>");
document.write("</tr>")
}
</script>
</head>
<body>
</body>
</html>
2.基本对象:
Function对象:函数对象
1.创建
1.var fun=new Function(形式参数列表,方法体);
2.Function 方法名称(形式参数列表)
{
方法体
}
3.var 方法名=function(形式参数列表){
方法体
}
2.方法:
3.属性:
length:形参的个数
4.特点:
1.方法定义时,形式参数的名称
2.方法是一个对象,如果定义名称相同的对象,后面的对象会覆盖前面的方法
3.在JS中,方法的调用只和方法的名称有关,和参数列表无关
4.在方法声明中,有一个隐藏的内置对象数组,可以接受其他参数
5.调用
方法的名称(实际参数)
function fun2(a,b) {
alert(a+b);
}
//可以覆盖重写
fun2 =function (a, b) {
alert(a-b);
}
//传递的参数实际上是一个隐藏数组
function add() {
var sum=0;
for(var i=0;i<arguments.length;i++)
{
sum+=arguments[i];
}
return sum;
}
Array:
1.创建:
1.var arr=new Array(元素列表);
2.var arr=new Array(默认长度)
3.var arr=[元素列表]
2.方法
join(参数):将数组的元素按指定的分隔符拼接为字符串
push(参数):在末尾创建新元素
3.属性:
数组的长度
4.特点
1.js中,数组元素的类型是可变的
2.js中,数据元素的长度可变
var arr=[1,"abc",true];
document.write(arr+"<br>");
document.write(arr[0]+"<br>");
document.write(arr[1]+"<br>");
document.write(arr[2]+"<br>");
document.write(arr[10]+"<br>");
arr[10]="hehe";
document.write(arr[10]);
document.write(arr[9]);
document.write(arr.join(" "));
arr.push(11);
document.write(arr[11]);
alert(arr.length)
Boolean:
Date:日期对象
1.创建:var date=new Date();
2.方法:
tolocalString():返回当前date对象对应的事件本地字符串格式
getTime():获取毫秒值。返回当前日期对象描述的事件到1970年1月1日0点的毫秒值
var date=new Date();
document.write(date+"<br>");
document.write(date.toLocaleString()+"<br>");
document.write(date.getTime()+"<br>");
Math;数学对象
1.创建:
特点:Math对象不用创建,直接使用。Math.方法名()
2.方法:
random():返回0·1之间的随机数,含0不含1
cei(x):对数进行上舍入
floor(x):对数进行下舍入
round(x):把树四舍五入为最近的整数
document.write(Math.PI);
document.write(Math.random()+" ");
document.write(Math.round(3.12)+" ");
document.write(Math.ceil(3.14)+" ");
document.write(Math.floor(3.6)+" ")
Number
String
RegExp:正则表达式对象
1.正则表达式:定义字符串的组成规则
1.单个字符
如:[a] [ab] [a-zA-Z0-9_]
特殊符号代表特殊含义的单个字符
\d:单个数字字符[0-9]
\w:单个单词字符[a-zA-Z0-0_]
2.量词符号
*:表示出现0次或多次
?:表示出现0次或1次
+:出现1次或多次
{m,n}:表示m<=数量<=n
m如果是缺省值;{,n}:最多n次
n如果缺省;{m,}最少m次
\w{6,12}
3.开始结束符号
^:开始
$:结束
2.正则对象
1.创建
1.var reg=new RegExp("正则表达式"),
2.var reg=/正则表达式/;
2.方法:
test(参数):验证指定的字符串是否符合正则定义 的规范
var reg=new RegExp("\\w{6,12}");
var reg2=/\w{6,12}/;
alert(reg);
alert(reg2);
var usename="zasfasd";
var flag=reg.test(usename);
alert(flag);
Global:
1.特点:全局对象,这个Global中封装的方法不需要对象就直接调用 方法名();
2.方法:
encodeURI():URL编码
decodeURL():url解码
encodeURLComponent():url编码
deodeURLComponet():url解码
parseInt():将字符串转为数字
逐一判断每一个字符是否是数字,直到不是数字位置,将前边数字部分转换为number
isNaN():判断一个值是不是 NaN
NaN六亲不认,连自己不认,NaN参与全为false
eval():将JavaScript字符串转化为脚本执行
var str="http://www.baidu.com?wd=传智播客";
var encode=encodeURI(str);
document.write(encode+"<br>");
var number=decodeURI("%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2");
document.write(number+"<br>");
//编码字符更多
var str="http://www.baidu.com?wd=传智播客";
var encode=encodeURIComponent(str);
document.write(encode+"<br>");
var number=decodeURIComponent("%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2");
document.write(number+"<br>");
var str="a234a32bc";
var number=parseInt(str);
alert(number);
var a=NaN;
document.write(isNaN(a));
var jscode="alert(123)";