JavaScript:
JavaScript的很多语法都和Java类似,但是两者之间没有关系。
概念
- 一门客户端脚本语言
- 运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎
- 脚本语言:不需要编译,直接就可以被浏览器解析执行了
功能:
- 可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。
JavaScript发展史:
- 1992年,Nombase公司,开发出第一门客户端脚本语言,专门用于表单的校验。命名为 : C-- ,后来更名为:ScriptEase
- 1995年,Netscape(网景)公司,开发了一门客户端脚本语言:LiveScript。后来,请来SUN公司的专家,修改LiveScript,命名为JavaScript
- 1996年,微软抄袭JavaScript开发出JScript语言
- 1997年,ECMA(欧洲计算机制造商协会),制定出客户端脚本语言的标准:ECMAScript,就是统一了所有客户端脚本语言的编码方式。
JavaScript = ECMAScript + JavaScript自己特有的东西(BOM+DOM)
基本语法
与html结合方式
- 内部JS:
定义< script >,标签体内容就是js代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
alert("JavaScript学习");
</script>
</head>
<body>
</body>
</html>
- 外部JS:
定义< script >,通过src属性引入外部的js文件
js文件:
alert("外部导入js文件");
html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/1.js"></script>
</head>
<body>
</body>
</html>
- 注意:
- < script >可以定义在html页面的任何地方。但是定义的位置会影响执行顺序。
- < script >可以定义多个。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/1.js"></script>
</head>
<body>
<script>
alert("第二个script标签");
</script>
</body>
</html>
先出现第一个script标签。
点击确定后出现第二个script标签。
注释
与Java相同,不用多说
- 单行注释://注释内容
- 多行注释:/* 注释内容 */
数据类型:
- 原始数据类型(基本数据类型):
1. number:数字。 整数/小数/NaN(not a number 一个不是数字的数字类型)
2. string:字符串。 字符串 “abc” “a” ‘abc’
3. boolean: true和false
4. null:一个对象为空的占位符
5. undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefined - 引用数据类型:对象
变量
- Java语言是强类型语言,而JavaScript是弱类型语言。
- 强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据类型。只能存储固定类型的数据
- 弱类型:在开辟变量存储空间时,不定义空间将来的存储数据类型,可以存放任意类型的数据。
语法:var 变量名 = 初始化值;
typeof运算符:获取变量的类型。null运算后得到的是object
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var num = 3;
document.write("num的值为 : "+num + "<br>");
document.write("num数据类型:" + typeof num + "<br>");
var str = "JavaScript";
document.write("str的值为 : " + str + "<br>");
document.write("str数据类型:" + typeof str + "<br>");
var bool = true;
document.write("bool的值为 : " + bool + "<br>");
document.write("bool数据类型:" + typeof bool + "<br>");
var nu = null;
document.write("nu的值为 : " + nu + "<br>");
document.write("nu数据类型:" + typeof nu + "<br>");
var unde;
document.write("nude的值为 : " + unde+ "<br>");
document.write("unde数据类型:" + typeof unde + "<br>");
</script>
</body>
</html>
运算符
一元运算符
- 只有一个运算数的运算符
++,-- , +(正号)
++ --: 自增(自减)
+(-):正负号 - 注意:在JS中,如果运算数不是运算符所要求的类型,那么js引擎会自动的将运算数进行类型转换
- 其他类型转number:
- string转number:按照字面值转换。如果字面值不是数字,则转为NaN(不是数字的数字)
- boolean转number:true转为1,false转为0
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var str = + "123";
document.write(typeof str + " : "+ str + "<br>");
var str1 = +"abc"
document.write(typeof str1 + " : "+ str1 + "<br>");
</script>
</body>
</html>
算数运算符
- 和Java相同:+, -, *, /, % …
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var num1 = 20;
var num2 = 8;
document.write(num1 + num2 + "<br>");
document.write(num1 - num2 + "<br>");
document.write(num1 * num2 + "<br>");
document.write(num1 / num2 + "<br>");
document.write(num1 % num2 + "<br>");
</script>
</body>
</html>
赋值运算符
-和Java相同: = ,+=, -+,…
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var num1 = 20;
num1+=50;
document.write(num1 + "<br>");
num1-=20;
document.write(num1 + "<br>");
</script>
</body>
</html>
比较运算符
-
, <, >= ,<=, ==, ===(全等于)
- 比较方式
1. 类型相同:直接比较
字符串:按照字典顺序比较。按位逐一比较,直到得出大小为止。
2. 类型不同:先进行类型转换,再比较
===:全等于。在比较之前,先判断类型,如果类型不一样,则直接返回false
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var num1 = 20;
var num2 = 50;
var num3 = 50;
var num4 = "50";
//判断num2是否大于num2
document.write((num2>=num1) + "<br>");
//判断num3的数值是否等于num2的数值
document.write((num3==num2) + "<br>");
//判断num3的数值是否等于num4的数值
document.write((num3==num4) + "<br>");
//判断num3是否全等于num4
document.write((num3===num4) + "<br>");
</script>
</body>
</html>
逻辑运算符
- 和Java相同: &&, ||, !
- 其他类型转boolean:
1. number:0或NaN为假,其他为真
2. string:除了空字符串(“”),其他都是true
3. null&undefined:都是false
4. 对象:所有对象都为true
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var bool1 = false;
var bool2 = false;
var bool3 = true;
var bool4 = true;
document.write(bool1 || bool2 + "<br>" );
document.write(bool1 || bool3 + "<br>");
document.write(bool3 && bool4 + "<br>");
document.write(bool1 && bool3 + "<br>");
</script>
</body>
</html>
三元运算符
语法:表达式?值1 : 值2
判断表达式的值,如果是true则取值1,如果是false则取值2;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var a = 3;
var b = 6;
document.write(a>b?"a是大于b的":"a不大于b");
</script>
</body>
</html>
流程控制语句
- 和Java相同
- if…else…
- switch:
在java中,switch语句可以接受的数据类型: byte int shor char,枚举(1.5) ,String(1.7)
switch(变量):
case 值:
在JS中,switch语句可以接受任意的原始数据类型 - while
- do…while
- for
for循环中数据类型为var。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var num = 0;
for(var i = 1; i<=10; i++) {
num+=i;
}
document.write(num);
</script>
</body>
</html>