1.函数
(1)函数不可以莫名其妙的执行
fn(); //自执行
document.onclick = fn; 事件执行函数 当事件执行的时候 函数不可以加括号
自执行前后位置都可以前后用的到
(2)不可以莫名其妙的出现一个匿名函数
通过var 定义的函数
var An = function(){}
函数自执行必须放到函数体的后边
(3)函数定义和函数表达式
function An(){
alert( 1 ); -----> 函数定义
};
var a = function(){
alert( 1 ); ----- > 函数表达式
}
a();
(function(){
alert(1) ---->第二种函数表达式写法
}());
+function (){
alert( 1 ) ----->第三种函数表达式写法
}();
当在匿名函数前加一个+号,这个整体便会成一个函数表达式 -,~,!都可以。(+ - ~ !)只有这四种符号,后面跟一个匿名函数
,会将匿名函数变成函数表达式,函数表达式带括号便可以自执行。它们之间没有任何区别,这样做的好处在于,模块化代码
2.函数的参数
(1)function goudan(){小括号中的参数叫形参
}
goudan( 5 )函数自执行括号中的参数叫实际参数
参数的个数没有限制,参数之间用逗号隔开,形参名和定义变量的规则一样。如果有形参,却没有对应的实参,这时候这个形参变会为undefined
实参的个数和形参的个数不是必须一样,实参多,不报错,但也找不到对应的形参
(2)参数
形参:相当于一个变量,要满足变量的命名规则
实参;任何数据类型都可以做实参
匿名函数也可以做实参
(3)注意事项
当一个函数有var的定义并且自己有名字,会出问题 eg: var a = function b(){}
会以a为准,然而有些浏览器中,a和b有可能都会存在,b不是消失了,b可以在内部访问的到。
把一些复杂的代码放到一个函数中,需要的时候 函数名+括号执行,这就叫做封装
3.不定参arguments
sum(1,2,3,4,5,6,7,8,9,10,11,12);
function sum(){
var x = 0;
for(var i=0;i<arguments.length;i++ ){
x += arguments[i];
}
alert( x )
}
即使有形参,不定参也会存在,每个函数中都会有arguments,它对应的都是实参
4.return
当函数执行完后,相当于一个数据,默认为undefined
如果想要函数内部的数据,就可以用return将其返回出去,直接拿是拿不到的,因为外部是无法访问函数中的数据的,函数中的数据是内部变量
只有return返回出去 才可以收到数据
当函数执行到return,就立即结束,不会在执行后面的代码了
5.js赋值的注意点
js不可以左边给右边,只可以右边给左边
eg:
var oBox = document.getElementById('box');
oBox.innerHTML = sum(1,2,3,4,5,6,7,8,9,10,11,12);
function sum(){
var x = 0;
for(var i=0;i<arguments.length;i++ ){
x += arguments[i];
}
alert( x );
return x;
}
(1)函数不可以莫名其妙的执行
fn(); //自执行
document.onclick = fn; 事件执行函数 当事件执行的时候 函数不可以加括号
自执行前后位置都可以前后用的到
(2)不可以莫名其妙的出现一个匿名函数
通过var 定义的函数
var An = function(){}
函数自执行必须放到函数体的后边
(3)函数定义和函数表达式
function An(){
alert( 1 ); -----> 函数定义
};
var a = function(){
alert( 1 ); ----- > 函数表达式
}
a();
(function(){
alert(1) ---->第二种函数表达式写法
}());
+function (){
alert( 1 ) ----->第三种函数表达式写法
}();
当在匿名函数前加一个+号,这个整体便会成一个函数表达式 -,~,!都可以。(+ - ~ !)只有这四种符号,后面跟一个匿名函数
,会将匿名函数变成函数表达式,函数表达式带括号便可以自执行。它们之间没有任何区别,这样做的好处在于,模块化代码
2.函数的参数
(1)function goudan(){小括号中的参数叫形参
}
goudan( 5 )函数自执行括号中的参数叫实际参数
参数的个数没有限制,参数之间用逗号隔开,形参名和定义变量的规则一样。如果有形参,却没有对应的实参,这时候这个形参变会为undefined
实参的个数和形参的个数不是必须一样,实参多,不报错,但也找不到对应的形参
(2)参数
形参:相当于一个变量,要满足变量的命名规则
实参;任何数据类型都可以做实参
匿名函数也可以做实参
(3)注意事项
当一个函数有var的定义并且自己有名字,会出问题 eg: var a = function b(){}
会以a为准,然而有些浏览器中,a和b有可能都会存在,b不是消失了,b可以在内部访问的到。
把一些复杂的代码放到一个函数中,需要的时候 函数名+括号执行,这就叫做封装
3.不定参arguments
sum(1,2,3,4,5,6,7,8,9,10,11,12);
function sum(){
var x = 0;
for(var i=0;i<arguments.length;i++ ){
x += arguments[i];
}
alert( x )
}
即使有形参,不定参也会存在,每个函数中都会有arguments,它对应的都是实参
4.return
当函数执行完后,相当于一个数据,默认为undefined
如果想要函数内部的数据,就可以用return将其返回出去,直接拿是拿不到的,因为外部是无法访问函数中的数据的,函数中的数据是内部变量
只有return返回出去 才可以收到数据
当函数执行到return,就立即结束,不会在执行后面的代码了
5.js赋值的注意点
js不可以左边给右边,只可以右边给左边
eg:
var oBox = document.getElementById('box');
oBox.innerHTML = sum(1,2,3,4,5,6,7,8,9,10,11,12);
function sum(){
var x = 0;
for(var i=0;i<arguments.length;i++ ){
x += arguments[i];
}
alert( x );
return x;
}