JavaScript 基础 函数
函数
重要 使用的场景最广泛解决代码重复的问题
function 变量名 () {
}变量名 () ;
学习步骤
-
1.定义函数
//function 关键字定义function 自定义函数名 ( ) {
代码 ;} ;
//通过字面量方式定义var 自定义函数名 = function () {
代码 ;}
-
2.函数参数
function 自定义函数名 (变量 ) {
代码 ;
for ( var i = 1 ; i <= 变量 ; i++ ) {
}} ;
//调用自定义函数名 (遍历赋值) ;
-
形参:在定义函数的时候 ;函数名后面的小括号里的变量就叫形参 , 本质就是一个变量 ; 但是不需要var定义
function 自定义函数名 ( 形参 ) {
代码 ;} ;
-
实参: 在调用函数的时候 ; 函数后面的小括号里的值就叫实参
function 自定义函数名 ( 形参 ) {
代码 ;} ;
自定义函数名 ( 实参 ) ;
-
总结
-
形参
-
1.函数中的形参可以是0个或者多个
-
2.如果函数中有多个形参用逗号隔开
function 自定义函数名 (形参 ,形参,形参 ) {
代码 ;} ;
-
3.形参可以是任意一种类型(变量 ,数组 ,函数……)
-
-
实参
-
1.函数中的实参可以是0个或者多个
-
2.函数有几个形参 就要有对应的几个实参,(实参就是给形参赋值的)
-
-
-
-
3.函数的返回值
函数内部形成了局部作用域只能在当前的作用域中使用
-
返回一个结果, 函数中返回一个结果
-
为什么要有返回值
-
如果希望在函数外部使用函数内部定义的变量的值, 那么必须使用返回值,否则会报错
-
-
返回值的使用
-
1.在希望在函数外部使用值或者变量前加 return 关键字即可
function fn ( ) {
var a = [1,2,3 ] ;
return a ;}
-
2.在调用函数的时候, 定义一个变量接受函数中的返回值
function fn ( ) {
var a = [1,2,3 ] ;
return a ;}
var a = fn ( ) ;document.write ( a ) ;
-
3.形参的值是实参进行赋值的 ( 实参是什么类型 ,形参就是什么类型 )
-
函数中一次只能使用一个return, return后面的代码不会执行
return [ a, b] ;函数中如果要返回多个值 ,则可以将结果放到一个数组中,返回数组即可
return a + ' , ' + b ;
-
函数中如果要返回多个值 。 则可以将结果放到一个数组中 返回数组即可
-
函数中如果没有返回值 , 最后的结果是什么? 最后的结果为undefined
-
-
var 变量名 = 函数();等于的是(返回的值)
-
为什么要学函数
-
.1.为了解决重复的代码写多次
怎么用函数
-
1.定义一个函数 (函数就像是代码的收纳盒)
function 自定义函数名 ( ) {
代码 ;} ;
-
2.函数中的代码默认不会自己执行 , 如果需要执行代码 需要调用函数
调用函数的写法
//定义函数function jj ( ) {
document.write ( ' 你好! ') ;
}
//调用函数
jj ( ) ;
-
函数名 ( ) ;
第二种定义函数方法: 通过字面量方式
var fn = function ( ) {
document.write ( ' 你好! ') ;
}
函数的拓展
1.作用域
-
代码能够起作用的区域
-
局部作用域
-
在函数内部作用的区域 ,在局部作用域中定义的变量 局部变量
-
-
全局作用域
-
在函数外部作用的区域,在全局作用域中定语的变量叫全局变量
-
-
特点
-
全局作用域中定义的变量(全局变量),可以在任何作用域中使用
-
局部作用域中定义的变量(局部变量),只能在当前的作用域中使用
-
2.作用域链
-
将多个作用域链到一块,形成的链状结构
-
作用:由于作用域链的存在可以让变量的生命周期延长
匿名函数
没有名字的函数
var fn = function( ) {
}匿名函数
对象中的方法都是匿名函数的写法
自调用函数
函数自己调用自己 ,函数调用的一种方式
(function fn = {
document.write( ) ;
})+();自调用函数;
注意
-
1.第一个小括号 表示将整个函数作为一个整体
-
2.第二个小括号表示对函数的调用
-
3.自调用函数中依然可以设置参数
arguments使用
function fn ( ) {
console.log (arguments);
for (var i = 0 ; i < arguments.length ; i++) {
console.log (arguments [ i ] ) ;
//arguments遍历
}
}fn ( 'abc' ,123) ;
求若干个值中的做大值;形参个数不确定;需要获得形参的信息;就需要用arguments
arguments 其实就是用来保存函数实参信息的一个伪数组 (长得像数组 ;可以遍历 但不能使用数组的方法)
arguments 伪数组中 ,length代表参数的个数 ,如果希望得到具体的参数信息 ,则需要遍历arguments;
形参个数不确定时用arguments ;确定的话用形参
代码预解析
console.log (a) ;var a = 123 ;
a的值为undefined
执行顺序:var a ;console.log (a);a = 123 ;
遇到变量会将变量的定义提升到当前作用域的开始位置,不包括变量的赋值 (变量提升)
遇见函数的时候 ,会将函数的声明提升到当前作用域的开始位置,不包括函数的调用 (函数提升)
如果函数名和变量名相同 先函数后变量

浙公网安备 33010602011771号