详细解读在js函数相关内容

本篇文章给大家简要分析了js中函数相关的重要知识点,对此有兴趣的朋友可以参考学习下。

要知道,在js中,引用类型是一种数据结构,包含5种引用类型,分别是Object,data,Array,re请输入代码gExp,Function。今天我们就说Function这种数据结构。

在js种函数实际上是对象,每个函数都是Function类型的实例。和其他引用类型一样,都具有属性和方法。

1. 函数定义有几种方法

1)函数声明语法定义

  function sum(num1,num2){  return num1+num2; }

登录后复制

2)函数表达式

注意函数表达式后边有一个分号;

var sum=function(num1,num2){   return num1+num2;}

登录后复制

使用Function 构造函数

使用构造函数可以接收任意数量的参数,但最后一个参数始终被看成是函数体,而前面的参数则枚举出了参数

var sum=new Function("num1","num2","return num1+num2")

登录后复制

当然第三种方法不友好,也不推荐。

函数名仅仅是指向函数的指针,所以函数名与包含对象指针的其他变量没有什么不同。也就是说一个函数可能会有多个名字。
在这里函数声明和函数表达式有什么区别呢?

解析器在向执行环境中加载数据的时候,对函数声明和函数表达式是不一样的。解析器首先会读取函数声明,并且使得这段函数声明代码在任何代码之前都可调用。这就是我们平时所说的函数声明提升。函数表达式不一样,他必须等到函数解析器执行到他所在的代码块的时候,才会被真正的执行。比较下面2个例子

console.log(sum(10,10));function sum(n1,n2){  return n1+n2;}以上代码会正常执行再看!console.log(sum(10,10));var sum=function(n1,n2){  return n1+n2;}以上执行器就会报错!

登录后复制

2.函数没有重载

如果声明了2个同名函数,结果是后面的函数覆盖了前面的函数。

function sun(a){ return a+100;}function sun(a){ return a+200;}var result=sum(2)//202

登录后复制

3.函数的内部属性

包括this,arguments

具体不再叙述了

4.函数的属性和方法

函数有2个属性,length和prototype

length表示函数希望接收命名参数的个数。

function a(name){ //todo}function b(name,age){ //todo}function c(){ //todo}a.length //1b.length //2c.length //0

登录后复制

prototype属性对于引用类型来说很重要,会有专门讲解,此处不再这赘述。

每个函数都包含2个非继承的方法 apply,call

这两个方法的用途都是在特定的作用域中调用函数,其实就是设置函数体内的this指代的值。

首先。apply()方法接收2个参数,一个是函数运行的作用域,另一个是参数数组,第二个参数可以是数组的实例,也可以是arguments.

function sum(num1,num2){  return num1+num2;}function test1(a,b){  return sum.apply(this,arguments);}function test2(c,d){  return sum.apply(this.[c,d]);}console.log(test1(1,1)) //2console.log(test2(1,1)) //2

登录后复制

call方法和apply方法没有多大的区别。区别就是call方法的第二个参数必须得传递的参数一个个列举出来。

使用call和apply来扩充作用域最大的好处就是对象不和任何方法耦合

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在vue中如何实现封装可复用的组件

在Vue中如何使用slot实现插槽分发内容

在vue.js中如何获取select中的value值(详细教程)

以上就是详细解读在js函数相关内容的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2750067.html

(0)
上一篇 2025年3月8日 05:30:40
下一篇 2025年3月8日 05:30:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 在Vue2.5中通过json文件读取数据的方法

    本文通过实例代码给大家详细介绍了vue2.5通过json文件读取数据的方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧 1.准备工作 1.1 webpack.dev.conf.js 在 const portfinder = requir…

    编程技术 2025年3月8日
    200
  • JS基础函数使用简介

    这次给大家带来js基础函数使用简介,js基础函数使用的注意事项有哪些,下面就是实战案例,一起来看一下。 /** 函数*  – 函数也是一个对象*  – 函数中可以分钟一些功能(功能),在需要时可以执行这些功能(代码)*  – 函数中可以保存…

    编程技术 2025年3月8日
    200
  • js基础提升教学之变量

    这次给大家带来js基础提升教学之变量,js变量使用的注意事项有哪些,下面就是实战案例,一起来看一下。 一门正常的语言,函数前都属于基础部分 格式:var  变量名称=变量值;(在135版本,必须加声明,即严格模式) —&#821…

    编程技术 2025年3月8日
    200
  • js基础提升学习之基本数据类型

    这次给大家带来js基础提升学习之基本数据类型,使用js基本数据类型的注意事项有哪些,下面就是实战案例,一起来看一下。 javascript的数据类型分为两大类型: 1、基本数据类型:       字符串(String)       数字(N…

    编程技术 2025年3月8日
    200
  • 在Angular.js中使用Swiper插件如何解决不能滑动的问题

    下面我就为大家分享一篇解决angular.js中使用swiper插件不能滑动的问题,具有很好的参考价值,希望对大家有所帮助。 我们都知道swiper是交互体验十分好的轮播插件 但是通过angular(ng-repeat)循环出来的swipe…

    编程技术 2025年3月8日
    200
  • js基础提升学习之运算符和表达式

    这次给大家带来js基础提升学习之运算符和表达式,使用js运算符和表达式的注意事项有哪些,下面就是实战案例,一起来看一下。 怎样才能得到一个数的二进制呢? 格式:alert( 变量名.toString(2) ); 如果想要得到一个数的其他进制…

    编程技术 2025年3月8日
    200
  • 在Angular5中如何调用第三方js插件(详细教程)

    下面我就为大家分享一篇angular5中调用第三方js插件的方法,具有很好的参考价值,希望对大家有所帮助。 话不多说直入主题,最常见的有三种方式来引用第三方插件,下面以jquery插件及基于JQuery的两款插件:nicescroll和ra…

    编程技术 2025年3月8日
    200
  • js基础提升学习之三大流程及switch语句

    这次给大家带来js基础提升学习之三大流程及switch语句,使用js三大流程及switch语句的注意事项有哪些,下面就是实战案例,一起来看一下。 必知知识: 1、代码运行顺序:自上而下,自左而右 2、分支:单分支,多分支,多分支,switc…

    编程技术 2025年3月8日
    200
  • 在angular2中如何使用第三方js库(详细教程)

    下面我就为大家分享一篇angular2中使用第三方js库的实例,具有很好的参考价值,希望对大家有所帮助。 本文以jquery 为例 第一种:有对应的声明文件的 1、用命令安装jQuery的声明文件。(声明文件是为了ide完美智能提示) np…

    编程技术 2025年3月8日
    200
  • js基础提升学习之操作DOM对象属性

    这次给大家带来js基础提升学习之操作DOM对象属性,使用js操作DOM对象属性的注意事项有哪些,下面就是实战案例,一起来看一下。 Js中一般:   id属性、title属性一般都是通过【标签对象.属性名称】来操作;   class属性,一般…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论