【JavaScript】part1
概念:一门客户端脚本语言。
- 运行在客户端浏览器中。每一个浏览器都有JavaScript的解析引擎
- 脚本语言:不需要编译,直接就可以被浏览器解析执行。
功能:可以增强用户和html
页面的交互过程,可以来控制html
元素,让页面有一些动态的效果,增强用户的体验。
JavaScript发展史:
- 1992年,
Nombase
公司,开发出第一门客户端脚本语言,专门用于表单的检验。命名为:C–; - 1995年,Netscape网景公司,开发了一门客户端脚本语言:
LiveScript
。后来,请来Sun公司的专家,修改LiveScript
,命名为JavaScript
; - 1996年,微软抄袭了
JavaScript
开发出JScript
语言; - 1997年,
ECMA
(欧洲计算机制造商协会),ECMAScript
,就是所有客户端脚本语言的标准。
JavaScript = ECMAScript+ JavaScript自己特有的东西(BOM+DOM)
ECMAScript
:客户端脚本语言标准
基本语法
与HTML的结合方式
-
内部JS
:定义<script>
,标签体内容就是js
代码; -
外部JS
;定义<script>
,通过src
属性引入外部的js
文件。
注意:
<script>
可以定义在html
页面的任何地方。但是定义的位置会影响执行顺序;<script>
标签可以定义多个。
注释
- 单行注释://注释内容
- 多行注释:
/*
注释内容
*/
数据类型
- 原始数据类型(基本数据类型):
- number:数字。整数/小数/
NaN
(not a number 一个不是数字的数字类型) - string:字符串。
“abc”、“a“、'abc'
- boolean:
true和false
- null:一个对象为空的占位符
- undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefined
- number:数字。整数/小数/
- 引用数据类型:对象
变量
变量:一小块存储数据的内存空间。
Java语言是强类型语言,而JavaScript是弱类型语言。
- 强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据类型。只能存储固定的数据类型。
- 弱类型:在开辟变量存储空间时,不定义空间将来存储的数据类型。可以存储任意的数据类型。
语法:
var 变量名 = 初始化值;
typeof
typeof
可以返回变量的数据类型。
<script>
var a;
a = 3;
alert(a);
a = 10;
alert(a);
//定义number类型
var num1 = 12;
var num2 = 2.4;
var num3 = NaN;
document.write(num1 + "---" + typeof (num1) + "<br>");//12---number
document.write(num2 + "---" + typeof (num2) + "<br>");//2.4---number
document.write(num3 + "---" + typeof (num3) + "<br>");//NaN---number
document.write("<br>");
//定义string类型
var str1 = "abc";
var str2 = "a";
var str3 = 'bds';
document.write(str1 + "---" + typeof (str1) + "<br>");//abc---string
document.write(str2 + "---" + typeof (str2) + "<br>");//a---string
document.write(str3 + "---" + typeof (str3) + "<br>");//bds---string
document.write("<br>");
//定义boolean类型
var b1 = true;
var b2 = false;
document.write(b1 + "---" + typeof (b1) + "<br>");//true---boolean
document.write(b2 + "---" + typeof (b2) + "<br>");//false---boolean
document.write("<br>");
//定义null类型
var null1 = null;
document.write(null1 + "---" + typeof null1 + "<br>");//null---object
document.write("<br>");
//定义undefined类型
var un1 = undefined;
var un2;
document.write(un1 + "---" + typeof un1 + "<br>");//undefined---undefined
document.write(un2 + "---" + typeof un2 + "<br>");//undefined---undefined
document.write("<br>");
</script>
运算符
- 一元运算符:只有一个运算数的运算符
++
、--
、+(正号)
、-(负号)
- 注意:在
JS
中,如果运算数不是运算符所要求的类型,那么JS
引擎会自动的将运算数进行类型转换:- 其他类型转number
- string转number:按照字面值转换。如果字面值不是数字,则转为
NaN
- 算术运算符:
+
、-
、*
、/
、%
…
- 赋值运算符:
=
、+=
、-=
…
- 比较运算符:
>
、<
、>=
、<=
、==
、===(全等于)
- 比较方式:
- 类型相同,直接比较
- 字符串,按照字典顺序比较。按位逐一比较,直到得出大小为止。
- 类型不同,先进行类型转换,再比较
===
:全等于,在比较之前,先比较类型,如果类型一样再进行值的比较
- 类型相同,直接比较
- 逻辑运算符:
&&
、||
、!
- 其他类型转boolean【需掌握】:
- number:
0
或NaN
为假,其他为真; - string:除了空字符串,其他都是true
- null&undefined:都是false
- 对象:所有对象都是true
- number:
- 三元运算符:
- 如:
var c = a>b ? a : b
- 如:
特殊语法
- 语句以
;
结尾,如果一行只有一条语句,则;
可以省略(不建议); - 变量的定义使用var关键字,也可以不使用;
- 用:定义的变量是局部变量
- 不用:定义的变量是全局变量
流程控制语句
if...else...
switch
- 在
java
中,switch语句可以接收的数据类型:byte
、short
、int
、char
、枚举、字符串 - 在
JS
中,switch语句可以接收任意数据类型
- 在
while
do...while
for
打印九九乘法表小练习
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>九九乘法表</title>
<style>
table{
padding-top: 100px;
}
td{
border: 1px solid;
font-size: 20px;
color: #0040ff;
}
center{
font-size: 20px;
color: #ff006a;
}
</style>
</head>
<body>
<script>
document.write("<table align='center'>");
for (let i = 1; i <= 9; i++) {
document.write("<tr>")
for (let j = 1; j <= i; j++) {
document.write("<td>")
document.write(i+"*"+j+"="+(i*j)+" ");
document.write("</td>")
}
document.write("</tr>")
}
document.write("</table >");
document.write("<center>九九乘法表</center>")
</script>
</body>
</html>
基本对象
Function
-
创建:
-
方式1:
var fun = new Function(形式参数列表,方法体);
【了解】 -
方式2:【常用】
function 方法名(形式参数列表){ 方法体; }
-
方式3:
var func2 = function(形式参数列表){ 方法体; }
-
-
属性
length
:形参的个数
-
特点
- 方法定义时,形参类型不用写,返回值类型也可以不写;
- 方法是一个对象,如果定义名称相同的方法,会覆盖原来的;
- 在
JS
中,方法的调用只与方法的名称有关,和参数列表无关(没有重载); - 在方法声明中有一个隐藏的内置对象(数组),arguments,封装了所有的实际参数
-
调用
方法名称(实际参数列表);
Array
- 创建
var arr = new Array(元素列表);
var arr = new Array(默认长度);
var arr = [元素列表];
- 属性
length
:数组的长度
- 特点
JS
中,元素的类型是可变的。JS
中,数组的长度是可变的。
- 方法
- join(参数):将数组中的元素按照指定的分隔符拼接为字符串;
- push(参数):向数组的末尾添加一个或多个元素,并返回新的长度;
Boolean
- 基本数据类型的包装类。
Date
- 创建:
var date = new Date();
- 方法
toLocaleString()
:返回当前date对象对应的时间本地字符串格式;getTime()
:获取毫秒值,返回当前时间日期对象描述的时间到1970年1月1日零点的毫秒值的差;
Math
- 创建:Math对象不用创建,直接使用。
Math.方法名();
- 方法:
random()
:返回0~1之间的随机数,含0不含1;ceil(x)
:向上取整;floor(x)
:向下取整;round(x)
:四舍五入
- 属性:
Number
- 基本数据类型的包装类。
String
- 基本数据类型的包装类。
RegExp
- 正则表达式:定义字符串的组成规则。
- 单个字符:[]
- 如:
[a]
、[ab]
、[a-zA-Z0-9_]
- 特殊符号代表特殊含义的单个字符:
\d
:单个数字字符[0-9]
\w
:单个单词字符[a-zA-Z0-9_]
- 如:
- 量词符号:
?
:表示出现0次或1次;*
:表示出现0次或多次;+
:`:表示出现1次或多次;{m,n}
:表示 m<= 数量 <= n;- 如:
\w{6,12}
表示6~12位的单个字符
- 开始结束符号
^
:开始;$
:结束。
- 单个字符:[]
- 正则对象:
- 创建:
var reg = new RegExp("正则表达式");
var reg = /正则表达式/;
- 方法:
test(参数)
:验证指定的字符串是否符合正则定义的范围;
- 创建:
Global
- 特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用,
方法名();
- 方法:
encodeURI()
:编码decodeURI()
:解码encodeURIComponent()
:编码,编码的字符更多decodeURIComponent()
:解码parseInt()
:将字符串转为数字- 逐一判断每一个字符是否为数字,直到不是数字为止
eval()
:将JavaScript
字符串转成脚本代码来执行