1.JavaScript 函数
1.1 JavaScript 函数定义
函数---完成某一个具体功能的代码块。
JavaScript 使用关键字 function 定义函数J
/* 格式:function functionName(parameters){
执行代码
} */
注释:function--声明/定义/创建函数的关键字【标志】
functionName--函数名称【自己定义】
(parameters)--参数列表,传递参数【参数是引入函数之外的数据进入本函数】
{}--函数体,包含具体功能的实现代码
函数声明后不会立即执行,会在我们需要的时候调用到。
1.2 函数表达式
函数表达式--将函数保存到一个变量中
var res1 = function () { return "hello"; }; //函数是不需要名称的
以上函数 "function(){return "hello";}"是一个匿名函数
alert(res1); //res1保存的结果是函数本身
alert(res1());//访问函数,保存函数的变量就是函数的名称
window.onload=function(){}; //window.属性
function(){}--匿名函数
函数存储在变量中,不需要函数名称,通常通过变量名来调用。
1.3 function() 构造函数
创建函数的方式1:使用关键字 function 定义函数
function test1() {
return "hello";
}
alert(test1()); //无参数,有返回值的函数
function test2(name, age) {
return name + "," + age;
}
alert(test2("zhangsan", 23)); //有参数,有返回值的函数
创建函数的方式2: 通过内置的 JavaScript 函数构造器(Function() )定义
var test1 = new Function("return'hello'");
alert(test1()); //无参数,有返回值的
var test2 = new Function("name", "age", "return name+','+age");
alert(test2("张三", 23)); //有参数,有返回值
实际上,你不必使用构造函数定义函数。
1.4函数提升(Hoisting)
函数提升(Hoisting)--- 先用后定义声明
var res1 = test3("lisi", 23);
alert(res1);
function test3(name, age) {
return name + "," + age;
}
1.5自调用函数---不常用
正常调用函数
function test3(name, age) {
return name + "," + age;
}
alert(test3("wangwu", 25));
无参数,无返回值的自调用函数
(function test3() {
alert("自调用函数");
})();
有参数,自调用函数
(function test3(name) {
alert("自调用函数--" + name);
})("zhangsan");
有参数,有返回值,自调用函数
var res1 = (function test3(name) {
alert("自调用函数--" + name);
return "hello," + name;
})("zhangsan");
alert(res1); (打印2次)
var res1 = (function test3(name) {
return "hello," + name;
})("zhangsan");
alert(res1); (打印1次)
1.6函数是对象
function test3(name) {
alert("自调用函数--" + name);
}
alert(typeof test3); //function
JavaScript 函数可以有 属性 和 方法。
arguments.length 属性返回函数调用过程接收到的参数个数.(arguments.length是函数的一个属性)
function myFunction(a, b) {
return arguments.length;
}
alert(myFunction(100, 300));
2--函数调用过程接收到的参数个数
toString() 方法将函数作为一个字符串返回(toString()是函数的一个方法)
function myFunction(a, b) {
return arguments.length;
}
alert(myFunction.toString());
2. JavaScript 函数参数
参数是引入函数之外的数据进入本函数进行元素的变量
函数显式参数(Parameters)与隐式参数(Arguments)
2.1显示参数
函数显式参数在函数定义时列出。
function test1(name, age) {
return name + "," + age;
}
name,age--显式参数
2.2 隐式参数
函数隐式参数在函数调用时传递给函数真正的值。
arguments 是JavaScript 中内置对象--是一个数组--保存参数值
function test2() {
return arguments[0] + "," + arguments[1];
}
alert(test2("zhangsan", 23));
2.3 通过值传递参数
function test3(name, age) {
return name + "," + age;
}
var res1 = test3("lisi", 24);
alert(res1);
//"lisi", 24--参数的具体值【值传递】
2.4通过对象传递参数
function test3(name, age) {
return name + "," + age;
}
var canshu1 = "王五"; //类型string
var canshu2 = 25; //类型number
var res1 = test3(canshu1, canshu2);
alert(res1);
//canshu1,canshu2---参数是变量--对象【对象传递】
alert(canshu1.charAt(0)); //charAt(0)是方法 canshu1变量就是对象
charAt() 对象方法 返回在指定位置的字符
3.JavaScript 函数调用
JavaScript 函数有 4 种调用方式。
3.1作为一个函数调用
function myFunction1(a, b) {
return a * b;
}
var res1 = myFunction1(10, 12.5);
alert(res1);
myFunction1函数不属于任何一个对象,myFunction1函数全局对象,
全局对象属于当前html网页--浏览器窗口--window对象
myFunction1函数是window对象的函数
var res1=window.myFunction1(10,12.5);
alert(res1);
this--当前对象
function myFunction1(a, b) {
return a * b;
}
var res1=this.myFunction1(10,12.5);
alert(res1);
var stu = {
name: "zhangsan",
testname: function () {
alert(this.name);
}
}
stu.testname(); //调取对象中的方法
3.2函数作为方法调用
var myobj = {
name: "zhangsan",
age: 23,
test1: function () {
return this.name + "-" + this.age;
}
}
var res1 = myobj.test1(); //调取对象中的方法
alert(res1);
3.3使用构造函数调用函数
function myFunction(a, b) {
this.name = a;
return a * b;
}