分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

JS 函数学习

发布时间:2023-09-06 02:20责任编辑:顾先生关键词:暂无标签

一、函数格式

1、函数可以通过声明来创建

function functionName(parameters){

       执行代码

}

2、函数也可以通过一个表达式定义存储在变量中

var fun = function(a,b){return a*b;}

二、函数可以自调用

如果表达是后面紧跟();,则会自我调用

(function () {
    var x = "Hello!!";      // 我将调用自己
})();

三、函数可以作为一个值或者一个表达式使用

function myfunction(a,b){

return a*b;

}

var x = myfunction(3,4);  //结果为12(作为变量)

function myfunction(a,b){

return a*b;

}

var x = myfunction(3,4) * 2;  //结果为24(作为表达式)

四、函数提升

使用表达式定义函数是无法提升(匿名函数)

五、函数是对象

函数也有属性和方法  例如:

function myfunction (a,b){

return arguments.length;  //返回函数在被调用过程中接收到的参数

}

又例如:

function myfunction (a,b){

return a*b;

}

var str = myfunction.toString();  //将函数作为字符串返回   结果为:function myFunction(a, b) { return a * b; }

六、函数参数(显示参数与隐示参数)

显示参数 parameters  在函数定义时给出

隐示参数 arguments    在函数调用时传递给函数真正的值

JS函数对隐示参数的个数与类型没有检测   定义显示参数时没有指定数据类型

七、Arguements对象

函数有个内置的arguments对象  它包含了函数调用的参数数组  相当于是函数接受的参数被全部放进一个数组arguments[ ]中

通过arguments.length可以简单地知道函数中究竟有多少个参数

八、函数调用

JS中一共有4种方法调用函数

每种方式的不同在于this的初始化

(1)作为一个函数调用

function myfunction(a,b){ ???return a*b;}myfunction(6,7); 

以上函数不属于任何对象,在JS中默认为全局对象

在HTML中默认的全局对象是页面本身,所以函数是属于页面的

在浏览器中页面的对象是浏览器窗口(window对象),函数会自动变为window对象的函数

function myfunction(a,b){ ???return a*b;}window.myfunction(6,7); ?//返回42

当函数没有被自身对象调用时,this就会变成全局对象

而在浏览器中全局对象是窗口(window对象)

function myfunction( ){ ???return this;}myfunction(); ??//返回window对象

(2)函数作为方法调用

var myObiect={ ???????????firstName:"A", ???????????lastName:"B", ???????????fullName:function(){ ???????????????return this.firstName+this.lastName; ???????????} ???????} ???????myObiect.fullName();

fullName方法是一个函数,函数属于对象,myObject是函数的所有者,所以this的值为myObject对象

测试如下:

var myObiect={ ???????????firstName:"A", ???????????lastName:"B", ???????????fullName:function(){ ???????????????return this; ???????????} ???????} ???????myObiect.fullName();

返回Object

(3)使用构造函数调用

如果函数使用了new,则是调用了构造函数

 ?????function myfunction(arg1,arg2){ ??
???????????this.firstName=arg1; ???????????this.lastName=arg2; ???????}
???????var x=new myfunction("A","B"); ???????x.firstName; ??//返回A

this创建了一个新对象

构造函数的调用会创建一个新对象,新对象继承了构造函数的属性和方法

(4)作为函数方法调用函数

在JS中函数是对象,函数有它的属性和方法

call() 与 apply()是预定义的函数方法,两个方法可以用于调用函数,两个函数的第一个参数必须是对象本身

function myfunction(a,b){ ???????????return a*b; ???????} ???????var myObject=myfunction.call(myObject,6,7);
function myfunction(a,b){ ???????????return a*b; ???????} ???????myArray=[6,7]; ???????var myObject=myfunction.apply(myObject,myArray); ???????myObject;

call()方法与apply()方法相同的地方在于传入的第一个参数都必须是对象本身

不同的是,applay()方法会将参数作为一个数组传入,而call()方法直接将参数传入

在严格模式下,在调用函数时的第一个参数回座位this的值,即使该参数不是一个对象

在非严格模式下,如果第一个参数的值是null或undefined,它将会使用全局变量代替

this指的是调用函数的那个对象

JS 函数学习

原文地址:https://www.cnblogs.com/zhuyan-dailycheck/p/9867077.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved