这是我参与2022首次更文挑战的第1天,活动详情查看:链接
一,什么是函数
在javascript中函数是一段可以被执行或调用任意次数的JavasScript代码,在数据类型中属于"function"。函数也拥有属性和方法,因此函数也是对象。
函数的三种创建方式
- 构造函数
构造函数可以将要封装的代码以字符串的形式传递给构造函数,如下2:
var fun = new Function()
//2.传递方式创建构造函数
var fun = new Function("console.log('hello,world');
- 函数声明
function 函数名([形参1,形参2,...]){
//语句...
}
- 函数表达式
var fun = function([形参1,形参2,...]){
//语句...
}
- 匿名函数(立即执行函数)
(function(){
//语句...
}())
二,函数的形参和实参
在定义函数时,函数接受的参数叫形参,如:
var fun = function([形参1,形参2,...]){
//语句...
}
形参可以是任意的,多个的,多个形参之间使用 , 隔开
上面的形参中包裹着一个 [] ,表示形参可选
实参表示在调用函数时,指定实参:
实参将会赋值给函数中对应的形参,调用函数时,解析器不会检查实参的类型。也就是说,实参可以是任意数据类型。
多余的实参不会被赋值,如下2.
如果实参的传入少于形参的个数,则没有对应的形参将变为undefined,如3.
function sum(a,b){
console.log(a+b);
}
fun(1,2);
//2.多余的实参
fun(1,2,'hello','xcasda',111);//3
//3. 实参和形参不一致,实参少于形参
fun(1);//nan
三,函数的返回值类型
函数中返回一个值可以用 return 关键字来进行返回。return后的值将会作为函数执行结果返回,可以定义一个变量来接受结果,如下 res:
若函数内不写return 定义变量接受,结果为undefined,直接return没有返回值,接受的变量也是undefined。如下2.
语法:
function 函数名(a,b){
return a+b;
}
var res = 函数名(参数1,参数2)
//2.
function sum(a,b){
return;
}
var res = sum(1,2)
return后可以跟任意类型的值。
四,立即执行函数
function (){
console.log('我是一个匿名函数')
} //Uncaught SyntaxError: Function statements require a function name
正确定义
(function (){
console.log('我是一个匿名函数')
})
// 立即执行函数调用
(function (){
console.log('我是一个匿名函数')
})()
// 立即执行函数携带参数
(function (a,b){
console.log('我是一个匿名函数')
console.log('我是一个匿名函数a值'+a)
console.log('我是一个匿名函数b值'+b)
})(123,456)
函数定义完,立即被调用,这种函数叫做立即执行函数
立即执行函数往往只会执行一次,执行完成就会销毁
五,函数作为对象的属性
如果一个函数只作为一个对象的属性保存,我们称这个函数为这个对象的方法。
调用函数则为调用对象的方法(只是名称的区别,其实跟函数调用 无区别)
var obj = new Object()
obj.name = '张三'
obj.age = 18
obj.sayName = function(){
console.log(obj.name)
}
//调用函数方法
obj.sayName();
//以下一样
var obj2 = {
name:"李四",
age:20,
sayName:function(){
console.log(this.name)
}
}
#枚举对象中的属性
枚举对象中的属性,使用for... in 语句,对象有几个属性,则会执行几次
var obj = {
neme:"赵茜",
age:19,
gener:"女"
}
for(var i in obj ){
console.log(i) // 属性值
console.log(obj[i]) // 值
}