JavaScript——关于JavaScript、在HTML中嵌入JS代码的三种方式、变量

JavaScript

01 关于JavaScript

1.1 JS的发展历史

  • JavaScript是运行在浏览器上的脚本语言。简称JS。
  • JavaScript是网景公司(NetScape)的 布兰登艾奇(JavaScript之父)开发的,最初叫做LiveScript。
  • LiveScript的出现让浏览器更加的生动了,不再是单纯的静态页面了。页面更具有交互性。
  • 在历史的某个阶段,SUN公司和网景公司他们之间有合作关系,SUN公司把LiveScript的名字修改为JavaScript。
  • JavaScript这个名字中虽然带有“Java”但是和Java没有任何关系,只是语法上优点类似。他们运行的位置不同,Java运行在JVM当中,JavaScript运行在浏览器的内存当中。
  • 网景公司1998年被美国在线收购。网景公司最著名的就是领航者浏览器:Navigator浏览器。
  • LiveScript的出现,最初的时候是为Navigator浏览器量身定制一门语言,不支持其他浏览器。
  • 当Navigator浏览器使用非常广泛的时候,微软害怕了,于是微软在最短的时间内组建了一个团队,
    开始研发只支持IE浏览器的脚本语言,叫做JScript。
  • JavaScript和JScript并存的年代,程序员是很痛苦的,因为程序员要写两套程序。在这种情况下,有一个非营利性组织站出来了,叫做ECMA组织(欧洲计算机协会)ECMA根据JavaScript制定了ECMA-262号标准,叫做ECMA-Script。
  • 现代的javascript和jscript都实现了ECMA-Script规范。(javascript和jscript统一了。)

1.2 JS的特性

  • JavaScript程序不需要我们程序员手动编译,编写完源代码之后,浏览器直接打开解释执行。

  • JavaScript的“目标程序”以普通文本形式保存,这种语言都叫做“脚本语言”。

  • Java的目标程序已.class形式存在,不能使用文本编辑器打开,不是脚本语言。

1.3 JS的组成

完整的JavaScript由语言基础,BOM,DOM组成

  • ECMAScript:JS的核心语法(ES规范 / ECMA-262标准)

  • DOM:Document Object Model(文档对象模型:对网页当中的节点进行增删改的过程。)HTML文档被当做一棵DOM树来看待。

    var domObj = document.getElementById("id");
    
  • BOM:Browser Object Model(浏览器对象模型)
    关闭浏览器窗口、打开一个新的浏览器窗口、后退、前进、浏览器地址栏上的地址等,都是BOM编程

1.4 JSP和JS的区别

  • JSP : JavaServer Pages(隶属于Java语言的,运行在JVM当中)
  • JS : JavaScript(运行在浏览器上。)

02 在HTML中嵌入JS代码的三种方式

2.1 事件与事件句柄

  • 事件:JS是一门事件驱动型的编程语言,依靠事件去驱动,然后执行对应的程序。在JS中有很多事件,其中有一个事件叫做:鼠标单击,单词:click
  • 事件句柄:并且任何事件都会对应一个事件句柄叫做:onclick
  • 事件和事件句柄的区别是:事件句柄是在事件单词前添加一个on。而事件句柄是以HTML标签的属性存在的。
  • οnclick= “js代码” 的执行原理
    页面打开的时候,js代码并不会执行,只是把这段JS代码注册到按钮的click事件上了。等这个按钮发生click事件之后,注册在onclick后面的js代码会被浏览器自动调用。
  • 怎么使用JS代码弹出消息框
    在JS中有一个内置的对象叫做window,全部小写,可以直接拿来使用,window代表的是浏览器对象。
    window对象有一个函数叫做:alert,用法是:window.alert(“消息”);这样就可以弹窗了。

应用案例

script标签javascript代码必须放在script标签中,用户点击以下按钮,弹出消息框

2.2 第一种方式(事件句柄式):

  • 事件句柄=“js代码”,把这段代码注册到onclick之后,有操作后,js代码会在浏览器被自动调用
  • 弹窗消息的用法是:window.alert(“消息”)
  • JS中的一条语句结束之后可以使用分号“;”,也可以不用
  • JS中的字符串可以使用双引号,也可以使用单引号,内双外单或者内单外双。
<input type="button" value="hello" onclick="window.alert('hello js')"/>
<input type="button" value="hello" onclick='window.alert("hello jscode")'/>

alert弹窗中window可以省略

<input type="button" value="hello" onclick='alert("hello jscode")'/>

完整示列代码:

<!doctype html>
<html>
	<head>
		<title>HTML中嵌入JS代码的第一种方式</title>
	</head>
	<body>

	<input type="button" value="hello" onclick="window.alert('hello js')"/>

	<input type="button" value="hello" onclick='window.alert("hello jscode")'/>

	<input type="button" value="hello" onclick="window.alert('hello zhangsan')
												window.alert('hello lis')
												window.alert('hello wangwu')"/>

	<!-- window. 可以省略。-->
	<input type="button" value="hello" onclick="alert('hello zhangsan')
												alert('hello lis')
												alert('hello wangwu')"/>

	</body>
</html>

2.3 第二种方式(脚本块):

通过脚本块的方式,页面打开的时候执行,并且遵守自上而下的顺序依次逐行执行。(这个代码的执行不需要事件)。(CSS为样式块)

  • javascript的脚本块在一个页面当中可以出现多次。
  • javascript的脚本块出现位置也没有要求,
  • alert有阻塞当前页面加载的作用。(阻挡,直到用户点击确定按钮。)

脚本块的格式为script

<script type="text/javascript">
	window.alert("first.......");
</script>

完整代码如下

<script type="text/javascript">
	window.alert("first.......");
</script>
<!doctype html>
<html>
	<head>
		<title>HTML中嵌入JS代码的第二种方式</title>
		<script type="text/javascript">
			window.alert("head............");
		</script>
	</head>
	<body>
        <input type="button" value="我是一个按钮对象1" />

            <!--第二种方式:脚本块的方式-->
            <script type="text/javascript">

                window.alert("Hello World!"); // alert函数会阻塞整个HTML页面的加载。
            </script>

            <input type="button" value="我是一个按钮对象" />

	</body>
</html>

2.4 第三种方式(外部引入js文件):

  • 同一个js文件可以被引入多次,但实际开发中这种需求很少
  • 引入js文件的同时再写代码,文件会被执行,但代码块不会被执行。

完整代码如下

<!doctype html>
<html>
	<head>
		<title>HTML中嵌入JS代码的第三种方式:引入外部独立的js文件。</title>
	</head>
	<body>	
	<script type="text/javascript" src="js/1.js">
		// 这里写的代码不会执行。
		// window.alert("Test");
	</script>

	<script type="text/javascript">
		alert("hello jack!");
	</script>
	</body>
</html>

js文件

window.alert("hello js!");
window.alert("hello js!");
window.alert("hello js!");

03 变量

3.1 变量的声明与赋值

  • java中要求变量声明的时候是什么类型,不可变。编译期强行固定变量的数据类型称为强类型语言。数据类型 变量名;
  • 对比javascript,javascript是一种弱类型语言,没有编译阶段,一个变量可以随意赋值,赋什么类型的值都行,var 变量名;
var i = 100;
i = false;
i = "abc";
  • 当系统没有赋值的时候,会默认给undefined,undefined是系统的一个存在值
  • 当系统直接没声明直接调用一个值,会报错
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>关于JS中的变量</title>
	</head>
	<body>
		<script type="text/javascript">
		var a, b, c = 200;
		   alert("a = " + a);
		   alert("b = " + b);
		   alert("c = " + c);
	   a = false;
	   alert(a);
	   
	   a = "abc";
	   alert(a);
	   
	   a = 1.2;
	   alert(a);
	   
	</script>
</body>
</html>

3.2 函数的定义与使用

JS函数类似Java中的方法

Java中定义方法的格式是

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

public static boolean login(String username,String password){
	...
	return true;
}

boolean loginSuccess = login("admin","123");

JS是一种弱类型,JS中的函数不需要指定返回值类型,返回什么类型都行

函数的定义格式是

//第一种方式:
function 函数名(形式参数列表){
	函数体;
}
//第二种方式:
函数名 = function(形式参数列表){
	函数体;
}

例如函数

function sum(a, b){
    // a和b都是局部变量,他们都是形参(a和b都是变量名,变量名随意。)
    alert(a + b);
}

sum(10,20);//函数必须调用才能执行

//或者第二个格式
// 定义函数sayHello
sayHello = function(username){
	alert("hello " + username);
}
		   
// 调用函数
sayHello("zhangsan");

配合单击按钮框的逻辑完整代码如下

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JS函数初步</title>
	</head>
	<body>
		<script type="text/javascript">
		function sum(a, b){
		   // a和b都是局部变量,他们都是形参(a和b都是变量名,变量名随意。)
		   alert(a + b);
	   }

	   sayHello = function(username){
		   alert("hello " + username);
	   }
	   
	   // 调用函数
	   sayHello("zhangsan");
	   
	</script>
	
	<input type="button" value="hello" onclick="sayHello('jack');" /> 
	<input type="button" value="计算10和20的求和" onclick="sum(10, 20);" />
	
</body>
</html>

重载的含义是:方法名或者函数名一样,形参不同(个数、类型、顺序)

  • JS当中的函数在调用的时候,参数的类型没有限制,并且参数的个数也没有限制,js本身自带重载。(弱类型)
  • 在JS当中,函数的名字不能重名,当函数重名的时候,后声明的函数会将之前声明的同名函数覆盖

完整代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JS函数初步</title>
	</head>
	<body>
		<script type="text/javascript">
		   function sum(a, b){
			   return a + b;
		   }
	   // 调用函数sum
	   var retValue = sum(1, 2);
	   alert(retValue);
	   
	   var retValue2 = sum("jack"); // jack赋值给a变量,b变量没有赋值系统默认赋值undefined
	   alert(retValue2); // jackundefined
	   
	   var retValue3 = sum();
	   alert(retValue3); // NaN (NaN是一个具体存在的值,该值表示不是数字。Not a Number)
	   
	   var retValue4 = sum(1, 2, 3);
	   alert("结果=" + retValue4); // 结果=3
	   
	   function test1(username){
		   alert("test1");
	   }
	   
	   /*
	   在JS当中,函数的名字不能重名,当函数重名的时候,后声明的函数会将之前声明的同名函数覆盖。
	   */
	   function test1(){
		   alert("test1 test1");
	   }
	   
	   test1("lisi"); // 这个调用的是第二个test1()函数.
	   
	</script>
</body>
</html>

3.3 全局变量和局部变量

  • 在函数体之外声明的变量属于全局变量;在函数体当中声明的变量,包括一个函数的形参都属于局部变量
  • 全局变量的生命周期是浏览器打开时声明,浏览器关闭时销毁,尽量少用。因为全局变量会一直在浏览器的内存当中,耗费内存空间
  • 局部变量的生命周期是:函数开始执行时局部变量的内存空间开辟,函数执行结束之后,局部变量的内存空间释放,局部变量生命周期较短

演示代码

// 全局变量
var username = "jack";
function accessUsername(){
// 局部变量
 var username = "lisi";
// 就近原则:访问局部变量
 alert("username = " + username);
 }
 // 调用函数
 accessUsername();
// 访问全局变量
 alert("username = " + username);

先输出lisi后输出jack
因为局部变量结束后便释放了,所以局部变量没有值
而如果单纯没有定义全局变量,全在全局中输出局部变量那会报错

function accessAge(){
var age = 20;
alert("年龄 = " + age);
}
		   
accessAge();
		   
// 报错(语法不对)
 alert("age = " + age);

如果一个变量在声明的时候没有定义var,默认是全局变量(即使在局部变量中声明)

// 以下语法是很奇怪的.
function myfun(){
// 当一个变量声明的时候没有使用var关键字,那么不管这个变量是在哪里声明的,都是全局变量.
myname = "dujubin";
 }
		   
// 访问函数
myfun();
		   
alert("myname = " + myname); // myname = dujubin

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖虎不秃头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值