JavaScript 之 使用方式、函数定义与调用、(局部、全局)变量
JavaScript 包括三块:ECMAScript、DOM、BOM
- ECMAScript 是 ECMA 制定的 262 标准,JavaScript 和 JScript 都遵守这个标准,ECMAScript 是 JavaScript 核心语法
- DOM 编程是通过 JavaScript 对 HTML 中的 dom 节点进行操作,DOM 是有规范的,DOM 规范是 W3C 制定的。(Document Object Model:文档对象模型)
- BOM 编程是对浏览器本身操作,例如:前进、后退、地址栏、关闭窗口、弹窗等。由于浏览器有不同的厂家制造,所以 BOM 缺少规范,一般只是有一个默认的行业规范。(Browser Object Model:浏览器对象模型)
————————————————————
一、嵌入JS的三种方式
行间事件
<input type="button" value="hello" onclick="alert('hello js')" />
- JS 中的任何一个事件都对应一个事件句柄,例如鼠标单击事件 click,对应的事件句柄就是 onclick,事件句柄都是以标签的属性方式存在
- JS 中的字符串可以使用单引号括起来,也可以使用双引号括起来
- JS 中的一条语句结束后可以使用“;”结尾,也可以不写
页面 script 标签嵌入
<script type="text/javascript">JS 代码</script>
- window.alert()的执行会阻塞当前页面的加载
- 一个页面中可以写多个脚本块
- 脚本块的位置没有限制
- 暴露在脚本块中的 JS 代码在页面打开的时候遵循自上而下的顺序依次逐行执行
外部引入
<script type="text/javascript" src="js 文件路径"></script>
- 这种写法错误:<script type="text/javascript" src="js 文件路径">这里不能写 JS 代码</script>
- 这种写法错误:<script type="text/javascript" src="js 文件路径"/>
————————————————————
二、函数的定义与调用
第一种:普通函数定义
function 函数名(形式参数列表) {
函数体;
}
例如:
function sum(a, b) { return a + b; }
注意:a 和 b 是形式参数列表,也是两个局部变量。返回数据使用 return 语句,页可以不返回任何数据。
JS 中的函数在调用的时候,实参可以随意,例如调用以上的 sum 函数,可以这样调用:
sum(),没有传任何实参的时候 a 和 b 变量没有赋值,则 a 和 b 都是 undefined。
sum(10),表示 a 变量赋值 10,b 变量仍然是 undefined。
sum(1,2),表示 a 是 1,b 是 2。
第二种:把函数的声明当做类进行定义
函数名 = function(形式参数列表) {
函数体;
}
例如:
sum = function(a, b) {
return a + b;
}
1、JS 中的函数定义在脚本块中,页面在打开的时候,函数并不会自动执行,函数是需要手动调用才能执行的。
2、由于 JS 是一种弱类型编程语言,所以函数不能同名,没有重载机制
3、这样的代码顺序是可以的,页面打开的时候会先进行所有函数的声明,函数声明优先级较高。
<script type="text/javascript">
sayHello();
function sayHello(){
alert("Hello JS");
}
</script>
4、用户点击按钮,调用函数
<script type="text/javascript">
function sayHello(){
alert("hello js");
}
</script>
<input type="button" value="hello" onclick="sayHello();"/>
————————————————————
三、局部变量和全局变量
局部变量:函数的形参是局部变量,另外使用 var 关键字在函数体中声明的变量是局部变量,函数执行结束之后,局部变量的内存就释放了。
全局变量:在函数体外声明的变量属于全局变量,另外不使用 var 关键字声明的变量无论位置在哪,它都是全局变量,全局变量在浏览器关闭时销毁。
<script type="text/javascript"> var a = 10; // 全局变量(在函数体外声明的变量) function test(){ a = 20; var b = 30; // 局部变量(使用 var 关键字在函数体中声明的变量) c = 40; // 全局变量(不使用 var 关键字声明的变量,必须初始化) alert(a+"--->"+b+"---->"+c); } test(); // 20--->30---->40 alert(a); // 20 // alert(b); // 报错,b是局部变量 alert(c); // 40 </script>