函数
描述
- 表示定义一段JavaScript代码,并且可重复使用
函数的定义
- 函数声明方式
- 字面量表达方式
函数声明方式
语法
function 函数名称( )"小括号不可省去" {
函数体
}
/* 函数声明方式 */
function fun() {
/* 在定义函数时,函数体中的内容不会被执行 */
console.log( '哑吼吼' );
}
/*
调用函数 - 使用函数名称
* 调用函数的时候会执行函数体中的内容
*/
fun();
字面量方式
语法
var 函数名 = function( )"小括号不可省去" {
函数体
}
/* 字面量方式 */
var fn = function() {
/* 在定义函数时,函数体中的内容不会被执行 */
console.log( '吼哑哑' );
}
/*
调用函数 - 使用函数名称
* 调用函数的时候会执行函数体中的内容
*/
fn();
函数的参数
描述
- 表示定义函数时在函数名称中使用的定义( 小括号中的 )
- 参数只能在函数中使用
参数分为
- 形参 - 定义函数时使用的参数
- 实参 - 调用函数时使用的参数
/* 定义函数 - 形参 */
function fun( a, b ){
/*
在参数中:
形参与实参个数相对应
* 形参的个数多于实参个数时,没有对应实参的形参会显示 undefined
* 实参的个数多于形参个数时,没有对应形参的实参会没有显示
*/
console.log( a, b );// 显示效果:a=1,b=2
}
/* 调用函数 - 实参 */
fun( 1, 2 );
return语句
- 表示函数在调用结束后具有一个返回值
- return语句并不是必要的
-
return语句一般会被编写在函数体的最后面
- 如果不在函数体的最后面,return语句之后的代码将不会被执行
- return语句带有值会显示值,如果没有值会显示 undefined
function fun(){
console.log( '啊哈哈' );
return 100;
}
/* 调用函数 */
fun();// 显示 啊哈哈
/* 将函数的返回值 赋值到变量中 */
var funs = fun();
/* 显示返回值 */
console.log( funs );// 显示 100
/* return语句不在函数体最后 */
function fn(){
console.log( '啊哈哈' );
return;
console.log( '呀吼吼吼' );
}
fn();// 显示 啊哈哈
var fns = fn();
console.log( fns );// 显示 undefined
作用域
- 变量和函数都具有作用域,用于显示可被显示访问的区域
-
作用域分为(变量和函数一样):全局作用域和局部作用域(函数作用域)
- 全局作用域:表示在函数之外的所有区域
- 局部作用域(函数作用域):表示在函数之内的区域
全局变量和局部变量
全局变量
- 是指在全局作用域中定义的变量
- 该变量可以同时作用在全局作用域和局部作用域(函数作用域)
局部变量
- 是指在函数内的变量
- 局部变量只能作用在当前函数中
/* 作用在全局作用域 */
var num = 100;
console.log( num );
/* 同时作用在局部作用域 */
function fun() {
console.log( num );
}
fun();
/* 定义全局变量 */
var num1 = 100;
function fn() {
console.log( num1 );
/* 定义局部变量 - 只能作用于当前函数 */
var num2 = 100;
console.log( num2 );
}
fn();
/* 在全局作用域调用局部变量会报错 */
console.log( num2 );// 显示 num2 is not define
函数和内部函数
函数(全局函数)
- 是指在全局作用域中定义的函数
- 该函数可以同时作用在全局作用域和局部作用域(函数作用域)
内部函数(私有函数)
- 是指在函数内的函数
- 内部函数只能作用在当前函数中
/* 定义全局函数 */
function fun(){
console.log( '啊哈哈' );
/* 定义内部函数 */
function fu(){
console.log( '呀吼吼' );
}
fu();
}
/* 全局作用域 */
fun();
/* 在全局作用域调用内部函数会报错 */
fu();// 显示 fu is not defined
/* 定义另一个全局函数 */
function fn(){
/* 函数中可以调用全局函数 */
fun();
/* 无法调用另一个函数的内部函数 - 会报错 */
fu();// 显示 fu is not defined
}
fn();
声明提前
- 表示在使用变量时,先调用变量,在对变量进行定义
- 语法不会报错,会显示 undefined
/* 先调用未定义的变量,在随后定义,语法不会报错,会显示 undefined */
console.log( s );//显示结果:undefined
var s ;//调用后定义
/* 重新定义并赋值 */
var s = 100;
/* 显示效果 */
console.log( s );// 100
按值传递
- 是指将函数实参的变量值赋值给函数形参,使实参和输出结果一样
- 在对局部变量进行修改时,不会修改全局变量
/* 全局变量 */
var s = 100;
function f ( s ) {
s++;// 修改局部变量
return s;// 返回数值
}
/* 定义变量显示返回值 */
var ss = f( s );
/* 显示函数输出效果 */
console.log( ss );// 101
/* 显示全局变量 */
console.log( s );// 100
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。