文章目录
- 1、JavaScript介绍
- 2、JavaScript和HTML代码的结合方式
- 2.1 第一种方式
- 2.2 第二种方式
- 3、JS的变量和数据类型
- 4、JS关系运算符
- 5、JS逻辑运算符
- 6、数组
- 7、JS函数的定义
- 8、JS函数的隐形参数arguments
- 9、JS中的自定义对象
1、JavaScript介绍
JavaScript(JS)语言诞生主要是为了完成页面数据验证,因此它运行在客户端,需要运行浏览器来解析执行JavaScript代码。
JS是Netscape网景公司的产品,最早取名LiveScript,为了吸引更多的Java程序员,更名JavaScript。因此Java和JavaScript没关系。
JS是弱类型,即类型可变。Java是强类型,即定义变量的时候,类型已确定,而且不可变。
Java中:
int i = 12;
---------------------
JavaScript中:
var i;
i = 12; 数值型
i = "abc" 字符串型
JavaScript的特点:
- 交互性(实现信息的动态交互)
- 安全性(不允许直接访问本地硬盘)
- 跨平台性(只要可以解释JS的浏览器都可以执行,和平台无关)
2、JavaScript和HTML代码的结合方式
2.1 第一种方式
在head标签中或者body标签中,使用script标签来书写JavaScript代码
<!DOCTYPE html>
<html lang="en>
<head>
<meta charset="UTF-8">
<title>Hello,JS!</title>
<script type="text/javascript">
//alert是JS语言提供的一个警告框函数
//可以接收任意类型的参数,传参就是警告框的提示信息
alert("Hello,JavaScript!");
</script>
</head>
<body>
</body>
</html>
运行效果:
2.2 第二种方式
使用script引入单独的JavaScript代码文件,类似CSS,达到复用的效果。script标签的src属性,可以指定外部js文件的路径。
//当前工程下定义1.js文件
alert("Hello,JavaScript!")
<!DOCTYPE html>
<html lang="en>
<head>
<meta charset="UTF-8">
<title>Hello,JS!</title>
<script type="text/javascript" src="1.js"></script>
</head>
<body>
</body>
</html>
运行效果:
注意:
不能在一对script标签中同时使用这两种方式:
错误写法:
-------------------
<script type="text/javascript" src="1.js">
alert("hello again");
</script>
正确写法,使用两对script标签:
-------------------
<script type="text/javascript" src="1.js"></script>
<script type="text/javascript">
alert("Hello again");
</script>
运行效果:
点击OK
3、JS的变量和数据类型
JavaScript中变量的定义格式:
- var 变量名;
- var 变量名 = 值;
JavaScript的变量类型包括:
- 数值类型:number,包括了Java中的byte、short、int、long、float、double
- 字符串类型:string
- 对象类型:object
- 布尔类型:boolean
- 函数类型:function
<script type="text/javascript">
vari;
i=12;
//typeof()是JS语言提供的一个函数
alert(typeof(i));//number
i="abc"
alert(typeof(i));//string
</script>
JavaScript里的特殊值:
- undefined:未定义,所有js变量未赋予初始值的时候,默认值都是undefined
- null:空值
- NAN:全称,Not a Number,非数值,非数字
<script type="text/javascript">
var a = 12;
var b = "abc";
alert(a * b);//NAN
</script>
4、JS关系运算符
除了Java中的> < >=等等,JS中需要区分的有等于和全等于:
- 等于:== 简单的做字面值的比较
- 全等于:===除了做字面值的比较之外,还会比较两个变量的数据类型
<script type="text/javascript">
var a = "12";
var b = 12;
alert(a == b); //true
alert(a === b); //false
</script>
5、JS逻辑运算符
且:&&
- 当表达式全为真的时候,返回最后一个表达式的值
- 当表达式中,有一个为假的时候,返回第一个为假的表达式的值
<script type="text/javascript>
var a = "abc";
var b = true;
var c = null;
var d = false;
alert(a && b); //true
alert(b && a);//abc
alert(c && a);//null
alert(a && d && c);//false
</script>
//注意null别带引号,"null"是字符串,为真,true和false更别带了
或:||
- 当表达式全为假时,返回最后一个表达式的值
- 当表达式中,有一个为真时,返回第一个为真的表达式的值
取反:!
不同于Java,在JavaScript语言中,所有的变量都可以做为一个boolean类型的变量去使用。 且0、null、undefined、""(空串)都认为是false,
其余为真。
<script type="text/javascript">
var x = null;
if (x) {
alert("null为真");
}else{
alert("null为假");
}
</script>
注意区分,JS中的""和” “,前者为假,但加了空格以后为真!!!
6、数组
JS中数组的定义格式:
var 数组名 = [];//空数组
var 数组名 = [1,"abc",true];
JavaScript中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组做扩容操作。
<script type="text/javascript">
var arr = [];
alert(arr.length);//0
arr[0]=12;//java中这样操作报错
alert(arr[0]);
alert(arr.length);//1
arr[2] = "abc";
alert(arr.length);//3,并不是2
alert(arr[1]);//undefined
</script>
JS数组的遍历:
<script type="text/javascript">
for (var i = 0;i<arr.length;i++){
alert(arr[i]);
}
</script>
7、JS函数的定义
第一种定义方式
//格式
function 函数名(形参列表){
函数体;
}
不同于Java,JS函数的形参列表不用指定数据类型,也不用加var,直接写变量名就好。
//举例:
<script type="text/javascript">
function fun(){
alert("无参函数fun执行");
}
//调用
fun();
//定义有参JS函数,不用指定类型,
//不用加var
function fun2(a,b){
alert(a+b);
}
fun2(1,2);
</script>
//定义有返回值的JS函数
<script type="text/javascript">
function sum(num1,num2){
var result = num1 + num2;
return result;
}
alert(sum(100,200));
</script>
第二种定义方式
//格式
var 函数名 = function(形参列表){函数体;}
//举例
<script type="text/javascript">
var sum = function(num1,num2){
var result = num1 + num2;
return result;
}
alert(sum(100,200));
</script>
注意:
在Java中方法可以重载,但在JS中函数的重载会直接覆盖掉上一次的定义
8、JS函数的隐形参数arguments
在function函数中不需要定义,但却可以直接用来获取所有参数的变量,称之为隐形参数。类似于Java中的可变长参数:public void fun (Object…args);可变长参数是一个数组。JS中的隐形参数也跟Java中的可变长参数一样,操作类似数组。
用法:
<script type="text/javascript">
function fun(){
alert(arguments.length);
alert("无参excute");
//操作类似数组
for(var i=0;i<arguments.length;i++){
alert(arguments[i]);
}
}
fun(1,2,3,"a");
</script>
举例:
//需求:
//计算任意数量的参数相加,并返回结果
<script type="text/javascript">
function sum(num1,num2){
var result = 0;
for(var i=0;i<arguments.length;i++){
result +=arguments[i];
}
return result;
}
alert(sum(1,2,3));//6
alert(sum(1,2,3,4,5,"abc"));//15abc
</script>
运行结果:
有”字符串“时,加号也是做了一个拼接。这个bug可加一个if分支修复:
<script type="text/javascript">
function sum(num1,num2){
var result = 0;
for(var i=0;i<arguments.length;i++){
if(typeof(arguments[i]) == "number"){
result +=arguments[i];
}
}
return result;
}
alert(sum(1,2,3));//6
alert(sum(1,2,3,4,5,"abc"));//15
</script>
9、JS中的自定义对象
Object形式的自定义对象
对象的定义:
//定义一个对象实例,空对象
var 变量名 = new Object();
//定义一个属性
变量名.属性名 = 值;
对象的访问:
变量名.属性/函数名();
举例:
<script type="text/javascript">
var obj = new Object();
alert(typeof(obj));
obj.name = "9527";
obj.age = 22;
obj.fun = function(){
alert("姓名:"+this.name+",年龄:"+this.age);
}
alert(obj.age);
obj.fun();
</script>
运行效果:
花括号形式的自定义对象
对象的定义:
//空对象
var 变量名 = {};
//定义一个属性,多个属性用逗号分开
var 变量名 = {
属性名:值,
属性名:值,
属性名:值,
函数名:function(){} //定义一个函数
};
对象的访问:
变量名.属性/函数名();
举例:
<script type="text/javascript">
var obj = {
name:"9527",
age:22,
fun:function(){
alert("姓名:"+this.name+",年龄:"+this.age);
}
};
alert(obj.name);
obj.fun();
</script>
运行结果: