1.使用 "函数声明" 创建函数
函数声明具有函数声明提升的特点,将函数声明提升到作用域顶端,意思是在执行代码之前会先读取函数声明,也就是说可以把函数声明放在函数调用的后面。
语法:
* function 函数名([形参1,形参2...形参N]){
* 语句...
* }
举例:
function sum1(num1,num2){
return num1+num2;
}
sum1(10,20);
2.使用 "函数表达式" 来创建一个函数
语法:
var 函数名 = function([形参1,形参2...形参N]){
* 语句....
* }
可分为命名函数表达式与匿名函数表达式两种
// 1.命名函数表达式
var testA=function abc(){
console.log(aaa);
}
// 2.匿名函数表达式 --最常用简称函数表达式
var testB=function(){
console.log(bbb);
}
函数表达式与函数声明最明显的区别是它不具有变量提升属性,如使用函数声明时,将函数调用放在前面:
test();//弹出hello,因为函数声明提升,函数调用之前,已经读取了该函数完成了声明
function test(){
alert("hello");
}
而如果在函数变量式中:
test();//报错:Uncaught ReferenceError: test is not defined
//在函数调用时,作用域中还未读取该函数的定义
//作用域读取函数表达式是按照代码顺序读取
var test = function(){
alert("hello");
}
test();//弹出hello
3.使用 "构造函数"
- 构造函数的执行流程:
1.立刻创建一个新的对象
2.将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象
3.逐行执行函数中的代码
4.将新建的对象作为返回值返回
使用同一个构造函数创建的对象,我们称为一类对象,也将一个构造函数称为一个类。将通过一个构造函数创建的对象,称为是该类的实例
语法:
var 对象名{
属性名 1:属性值;
属性名 2:属性值;
....
函数名 1:function(形参...)
{函数体 1},
函数名 2:function(形参...)
{函数体 2},
.....
}
举例:
var zjl = {
name:"周杰伦”,
gender:"male",
setAge:function(age){
this curage=age;
}
};
this关键字代表zjl这个对象,this.curage就是把形参的值赋给zjl这个对象的courage属性,如果用同样的方法给属性name和gender赋值,赋值后name和gender的初始值就会被覆盖。如果不加this,curage就不是对象zjl的属性了,而是一个全局变量,如果是var courage,那它就是setAge里的局部变量,不再是zjl的属性了,加了this关键字的方法和属性叫做公有方法和属性
网友评论