函数 function
样式:
function 随便起个名 () {
}
例如:
if(1 > 0){
document.write('a');
document.write('b');
document.write('c');
}
if(2 > 0){
document.write('a');
document.write('b');
document.write('c');
}
if(3 > 0){
document.write('a');
document.write('b');
document.write('c');
}
以上情况就是偶合,偶合度非常高,偶合代码就是低效代码。
编程讲究高内聚,弱偶合。
下面是简便写法:可以用test调用执行,写几个test就调用执行几次。
function test () {
document.write('a');
document.write('b');
document.write('c');
}
if(1 > 0){
test();
}
if(2 > 0){
test();
}
if(3 > 0){
test();
}
例如:
function test () {
var a = 123;
var b = 234;
var c = a + b;
document.write(c);
}
test();
显示:357。写了一个test(),就执行了一遍函数语句,如果不写test(),就相当于有一个框来存东西,但是不执行。
例如:
function test () {
document.write('hello world ')
}
test();
注:函数function可以先定义功能,之后再去用
一,定义
1,函数声明
定义一个函数可以先写一个function,函数就是另一个类型的变量
我声明一个函数test,test是函数名,写成下面
function test(){
函数体
}
函数名起名:开发规范要求,函数名和变量名如果由多个单词拼接,必须符合小驼峰原则(第一个单词首字母小写,后面的首字母大写)
例如:
function theFirstName(){}
document.write(theFirstName);
显示:function theFirstName(){},打印出来是函数体。
2,函数表达式
例如:
var test = function test (){
document.write('a')
}
test();
这种方式像定义了一个变量
(1)命名函数表达式
例如:
var test = function abc() {
document.write('a');
}
上面这个函数 name 是 abc
在下面这个例子中:
var test = function abc() {
document.write('a');
}
这一部分叫表达式,是会忽略abc这个地方的名字,会变成匿名函数表达式,不如直接写成匿名函数
(2)匿名函数表达式(常用,一般说的函数表达式就是匿名函数表达式)
function test() {}
二,组成形式
1,函数名称
function test(){}其中function是函数关键字,test是函数名,必须有(){},参数可有可没有,参数就是写在()里面的。
如果写成function test(a, b){},相当于隐式的在函数里面 var a,var b 申明了两个变量,()里面不能直接写var
例如:
function test(a, b){
document.write(a + b)
}
test(1, 2);
上面这个例子,1就会到a里面去,2就会到b里面去,这是传参形式
2,参数
(1) 形参 (形式参数):指的是function sun(a, b){},括号里面的a和b
(2) 实参(实际参数):指的是sum(1, 2),里面的1和2。
天生不定参,形参可以比实参多,实参也可以比形参多
例如:
// 形式参数——形参
function sum(a, b) {
var c = a + b;
document.write(c);
}
// 实际参数——实参
sum(1, 2);
sum(3, 4)
js参数不限制位置,天生不定参数,在每一个函数里面都有一个隐式的东西arguments这个是实参列表
console.log();是把信息展示在控制台
document.write();是把信息展示在网页
例如:任意个数求和(不定参数才能求出来)
function sum() {
// arguments [1,2,3,4,5,6,7];
var result = 0;
for(var i = 0;i < arguments.length; i++){
result += arguments[i];
}
console.log(result)
}
sum(1,2,3,4,5,6,7,8,9)
形参永远有尽头,要实现任意求和,无法定义形参。
例如:
function sum(a, b) {
// arguments [1,2]
// var a = 1;
a = 2;
console.log(arguments[0]);
}
sum(1, 2);
显示:2,a变,arguments跟着变,有一个映射关系。
例如:
function sum(a, b) {
// arguments [1,2]
// var a = 1;
arguments[0] = 3;
console.log(a);
}
sum(1, 2);
显示:3,arguments里面一个变,一个跟着变,但是[1, 2]是两个人,相当于映射关系。
例如:当形参两个,实参一个
function sum(a, b) {
// arguments[1]没值
b = 2;
console.log(arguments[1]);
}
sum(1);
显示:undefined,实参出生时有几个,就有几个,在写b=2,也不加在arguments[1]里面了,此处的b就当变量用,它和实参不映射。
形参实参完全对应上才映射
例如:
function sum(a, b) {
// arguments[1]没值
a = 2;
console.log(arguments[0]);
}
sum(1);
显示:2
3,返回值 return
结束条件和返回值 return,return 有终止函数的功能
没写return,实际上是加了一个隐式的return。
例如:
function sum(a, b) {
console.log('a');
console.log('b');
return;
}
sum(1);
显示:a b
例如:
function sum(a, b) {
console.log('a');
return;
console.log('b');
}
sum(1);
显示:a
return 最常用的是返回值,本意可以把一个值返回到函数以外,自己的函数也能返回
return 空格 123
例如:
function sum() {
return 123;
console.log('a');
}
var num = sum();
这里num就是123,而且console.log()无效,这里的return有终止函数又返回变量