【重学JS】-3, 函数

96 阅读3分钟

这是我参与2022首次更文挑战的第1天,活动详情查看:链接

一,什么是函数

在javascript中函数是一段可以被执行或调用任意次数的JavasScript代码,在数据类型中属于"function"。函数也拥有属性和方法,因此函数也是对象。

函数的三种创建方式

  1. 构造函数

构造函数可以将要封装的代码以字符串的形式传递给构造函数,如下2:

var fun = new Function()

//2.传递方式创建构造函数
var fun = new Function("console.log('hello,world');
  1. 函数声明
function 函数名([形参1,形参2,...]){
  	//语句...
}
  1. 函数表达式
var fun = function([形参1,形参2,...]){
	//语句...
}
  1. 匿名函数(立即执行函数)
(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]) // 值
}