web前端JavaScript笔记——(3)函数

函数

函数也是一个对象,

函数中可以封装一些功能(代码) ,在需要时可以执行这些功能(代码)

函数中可以保存一些代码在需要的时候调用

使用typeof检查一个函数对象时,会返回function

创建一个函数对象//可以将要封装的代码以字符串的形式传递给构造函数

var fun = new Function("console.log('Hello 这是我的第一个函数');");

//封装到函数中的代码不会立即执行

//函数中的代码会在函数调用的时候执行

//调用函数 语法: 函数对象()

//当调用函数时,函数中封装的代码会按照顺序执行

//fun();

var fun = new Function("console.log('Hello 这是我的第一个函数');");

fun.hello=”你好”;

console.log(fun.hello);   //”你好”

function fun2(){

}

console.log(fun2);

输出结果

function fun2(){

}

创建函数的方法

1.使用 函数表达式 来创建一个函数

 var 函数名 = function([形参1,形参2...形参N]){语句......}

var fun = new Function("console.log('Hello 这是我的第一个函数');");

2.使用 函数声明来创建一个函数语法:

function 函数名([形参1,形参2...形参N]){

语句....

}

function fun2(){console.log("这是我的第二个函数~~~"):}

这是一个匿名函数

function(){

console.log("我是匿名函数中封装的代码”);

}

函数的参数

可以在函数的()中指定一个或多个形参(形式参数)

多个形参质检使用,隔开,声明形参就相当于在函数内部声明了对应的变量

但是并不赋值

function sum(a,b){

console.log(a+b);

}

/*在调用函数时,可以在()中指定实参(实际参数)

实参将会赋值给函数中对应的形参*/

sum(1,2);

调用函数时解析器不会检查实参的类型.所以要注意是否有可能会接收到非法的参数。,如果有可能则需要对参数进行类型的检查

多余实参不会被赋值 如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined

函数的返回值

//使用函数声明来创建函数

function sum(a,b,c){

var d=a+b+c;

return d;

}

var result=sum(4,7,8);

console.log(“result=”+result);

可以用return来设置函数的返回值   语法:return  值

return后的值将会会作为函数的执行结果返回,

可以定义一个变量,来接收该结果。在函数中return后的语句都不会执行

函数被调用后才会执行

如果return语句后不跟任何值就相当于返回一个undefined,

如果函数中不写return,则也会返回undefined

return后可以跟任意类型的值

变量result的值就是函数的执行结果

函数返回什么result的值就是什么

实参可以是任何值,可以是基本数据类型,可以是对象,也可以是函数

方法一(实参参数的顺序不可以打乱,形参是基本数据类型):

/*创建一个函数,可以在控制台中输出一个人的信息

可以输出人的name  age gender address*/

function sayHello(name,age,gender,address){

console.log(“我是”+name+”,今年我”+age+”岁了,”+”我是一个”+gender+”,我住在”+address);

}

sayHello(“孙悟空”,18,”男”,”花果山”);

方法二(实参的顺序可以打乱,形参是对象):

function sayHello(o){

console.log(“我是”+name+”,今年我”+age+”岁了,”+”我是一个”+gender+”,我住在”+address);

}

//创建一个对象

var obj={

name:”孙悟空”;

age:18;

gender:”男”;

address:”花果山”;

};

sayHello(obj);

打印结果:我是孙悟空,今年我18岁了,我是一个男人,我住在花果山。

function fun(a){

a(obj);

}

fun(sayHello);     //本质sayHello(obj);

打印结果:我是孙悟空,今年我18岁了,我是一个男人,我住在花果山。

实参也可以是一个函数

function fun(a){

console.log(“a=”+a);

}

fun(function(){alert(“hello”)});

//打印结果

“a=function(){alert(“hello”)}”

mianji()   调用函数  相当于使用的函数的返回值

mianji    函数对象   相当于直接使用函数对象

返回值可以是任何的数据类型也可以是一个对象。

function fun2(){

var obj = (name:"沙和尚"};

return obj;

var a = fun2();

console.log("a ="+a);

//打印输出 a=[object Object]

function fun3(){

//在函数内部再声明一个函数

function fun4(){

alert("我是fun4");

}

fun4();

}

fun3();

结果:弹出窗口  我是fun4

立即执行函数:直接调用匿名函数

立即执行函数是函数被定义完成,立即被调用。

(function(){

alert(“我是一个匿名函数~~~”);

})();

你可能感兴趣的:(javascript,前端,vue.js)