JS-02-JS变量与函数

JS-02-JS变量与函数

1.JS标识符命名规则与规范

JS标识符的命名规则和规范按java的方式就可以了。

标识符命名规则:

  1. 由字母、数字、下划线(_)、美元符号($)组成。
  2. 不能由数字开头。
  3. 严格区分大小写。
  4. 不可使用关键字命名。
  5. 理论上长度不限。

标识符命名规范:

  1. 按照驼峰命名法:
    • 类名和接口名首字母大写,后面每一个单词的首字母也大写。
    • 方法名和变量名首字母小写,后面每一个单词的首字母大写。
  2. 常量所有字母都要大写,且单词与单词之间用下划线衔接。
  3. 命名要尽量用英语单词写,见名知意。

2.JS的变量

2.1怎么声明变量?

var 变量名;

2.2如何赋值?

变量名 = 值;

2.3JS变量可以随意赋值

javascript是一种弱类型编程语言,没有编译阶段,一个变量可以随意赋值,赋什么类型的值都可以。

var i = 10;
i = 3.14;
i = true;
i = 'a';
i = "abc";
i = new Object();

2.4变量默认值为undefined

在JS中,当一个变量没有手动赋值的时候,系统默认赋值undefined

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>变量</title>
	</head>
	<body>
		<script type="text/javascript">
			var j;
			// undefined在JS中是一个具体存在的值
			alert("j =" + j);
		</script>
	</body>
</html>

2.5访问没有声明的变量

如果一个变量没有声明就直接访问,会报语法错误。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>变量</title>
	</head>
	<body>
		<script type="text/javascript">
			 var j;
			// 默认赋值undefined
			alert("j =" + j); 
			//访问未声明的变量k
			alert(k)
		</script>
	</body>
</html>

打开页面,点击F12,查看控制台,可见,当访问未声明的变量时会报错:

k is not defined

2.6演示给同一个变量设置不同的值

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>变量</title>
	</head>
	<body>
		<script type="text/javascript">
			var a,b,c = 100;
			alert("a = " + a);
			alert("b = " + b);
			alert("c = " + c);
			
			a = false;
			alert(a);
			a = "abc";
			alert(a);
			a = 3.14;
			alert(a);
		</script>
	</body>
</html>

3.JS的函数

3.1JS函数有什么用?

JS中的函数等同与java中的方法,函数也是一段可以被重复利用的代码片段。

函数一般可以完成某个特定功能。

3.2回顾java方法

格式:

[修饰符列表] 返回值类型 方法名(形式参数列表) {
    方法体;
}

例如:

public static boolean doSome(String name,int age) {
    ...
    return false;
}
public static void main(String[] args) {
    boolean isflag = doSome("张三",25);
}

3.3JS函数的定义和调用

3.3.1JS函数定义的语法格式

第一种:

function 函数名(形式参数列表) {
    函数体;
}

第二种:

函数名 = function(形式参数列表) {
    函数体;
}

JS中的函数不需要指定返回值类型,返回什么类型都可以。

3.3.2定义JS函数并调用

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JS函数</title>
	</head>
	<body>
		<script type="text/javascript">
			// 第一种方式
            //a和b都是局部变量,都是形参
			function sum(a,b) {
				alert("a + b =" + (a + b));
			}
            //函数必须调用才会执行
            //调用sum函数
			sum(10,20);
            
			// 第二种方式
			show = function(name) {
				alert("Hello " + name);
			}
            //调用show函数
			show("Tom");
		</script>
	</body>
</html>

3.3.3将JS函数的调用放到事件句柄里

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JS函数</title>
	</head>
	<body>
		<script type="text/javascript">
			// 第一种方式
			function sum(a,b) {
				alert("a + b =" + (a + b));
			}
			// 第二种方式
			show = function(name) {
				alert("Hello " + name);
			}
		</script>
		<!-- 将函数的调用放到事件句柄里 -->
		<input type="button" value="10和20的和" onclick="sum(10,20)"/>
		<input type="button" value="Hello" onclick="show('Jerry')"/>
	</body>
</html>

3.4JS函数的灵活性

3.4.1JS函数在调用时,参数类型和个数没有限制

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JS函数的灵活性</title>
	</head>
	<body>
		<script type="text/javascript">
			//调用函数时,参数不受限制
			function doSome(a,b) {
				return a + b;
			}
			//不传参数
			var value1 = doSome();//NaN,(Not a Number),表示不是一个数字。
			alert(value1);
			//传一个字符串参数
			var value2 =  doSome("abc + ");//abc + undefined
			alert(value2);
 			//传一个数字参数
			var value3 = doSome(10);//NaN
			alert(value3);
			//传两个数字参数
			var value4 = doSome(10,20);//30
			alert(value4);
			//传三个数字参数
			var value5 = doSome(10,20,40);//30
			alert(value5);
		</script>
	</body>
</html>

3.4.2在JS函数不能重名

如果两个函数重名,那么后面声明的函数会将前面声明的同名函数覆盖。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>在JS函数不能重名</title>
	</head>
	<body>
		<script type="text/javascript">
			//前面的函数
			function doOther(name) {
				alert(name);
			}
            //后面的重名函数
			function doOther() {
				alert("Hello Hello");
			}
            //调用函数
			doOther("zhangsan");
		</script>
	</body>
</html>

4.JS的全局变量和局部变量

4.1JS中全局变量和局部变量的概念

全局变量:

  • 在函数体外声明的变量都属于全局变量。
  • 全局变量的生命周期是:
    • 浏览器打开时声明。
    • 浏览器关闭时销毁。
  • 尽量少用全局变量,因为全局变量一直会在浏览器的内存里,耗费内存空间。
  • 能用局部变量尽量用局部变量。

局部变量:

  • 在函数体中声明的变量属于局部变量。包括函数的形参。
  • 局部变量的生命周期是:
    • 函数开始执行时局部变量的内存开辟。
    • 函数执行结束后,局部变量的内存空间释放。
  • 局部变量的生命周期较短。

4.2全局变量和局部变量的访问

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>JS的全局变量和局部变量</title>
    </head>
    <body>
        <script type="text/javascript">
            var a = 10;//全局变量
            function fun1() {
                alert(a);//访问全局变量
            }
            fun1();

            var username = "张三";//全局变量
            function fun2() {
                var username = "李四";//局部变量
                alert(username)//就近原则,这里访问的是局部变量
            }
            fun2();//函数执行结束后局部变量的内存被释放
            alert("username = " + username);//这里调用的是全局变量
        </script>
    </body>
</html>

4.3在函数外面能否访问局部变量

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JS的全局变量和局部变量</title>
	</head>
	<body>
		<script type="text/javascript">
			function fun3() {
				var num = 50;
				alert(num);
			}
			fun3();//在此处局部变量已被释放
			alert(num);//在此处访问的是一个没有被定义的变量,语法错误。num is not defined
		</script>
	</body>
</html>

4.4当声明变量时不使用var关键字

当一个变量声明时未使用var关键字,那么无论这个变量在哪声明的,都会声明成全局变量

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>JS的全局变量和局部变量</title>
    </head>
    <body>
        <script type="text/javascript">
            function fun4() {
                num2 = 50;
                alert(num2);
            }
            fun4();
            alert(num2);
        </script>
    </body>
</html>

posted @ 2021-08-01 21:26  TSCCG  阅读(83)  评论(0编辑  收藏  举报