美文网首页
总结一下js的函数类型

总结一下js的函数类型

作者: Willworkgogogo | 来源:发表于2018-04-29 00:07 被阅读0次

几个概念

  1. 在js中,函数就是个对象
  2. 函数名就是个指向函数对象的指针

函数的三种声明方式

  1. 函数声明
   // 语法
   function sayName(name) {
    console.log(name)
   }
  1. 函数表达式
  // 语法
  var  sayName = function(name){
    console.log(name)
  }
  1. 使用Fuction构造函数生成实例
  // 前面都是函数参数,最后一个字符串参数表示函数体
  var sum = new Function("num1", "num2", "num1+num2")
  // 不推荐的原因:
  // 1. 需要两层解析,一是函数解析,而是对内部字符串的解析,耗性能
  // 1. 书写麻烦,函数体还不能写复杂

函数声明和函数表达式的区别

要理解它们的区别,先要知道几个概念

  1. 解析器,就是对js源码进行一定规则解析,然后交给执行环境执行
  2. 执行环境,js源码真正运行的环境

js解析器的规则有点特殊,有两个提升

  1. 变量提升,源码中声明的变量会被被解析器提取出来,在源码逐行执行前被执行,此时变量会被赋值为undefined
  2. 声明函数提升,声明函数会被整体提升到代码执行前,所以在声明函数之前就调用该函数,是不会报错的,因为该函数已经被提升到执行环境的头部了

总结:

  1. 函数表达式,只会提升它的变量,该变量为undefined,只有当代码执行该函数所在的位置时,该变量才会被真正指向该函数。所以在函数表达式之前的调用,都会导致脚本报错
  2. 声明函数会被提升,提前引用不会报错

函数的属性和方法

  1. 内部属性this和arguments
    1. this,表示调用函数的对象的引用
    2. arguments,函数参数组合而成的类数组
    3. arguments.callee,该属性指向该函数,做递归的时候很好用
  2. 函数本身的属性和方法
    1. length, 返回函数参数的个数
    2. apply()、call()、bind(), 用于函数继承并修改内部this指向,详情可以看我的另一篇介绍,蛮简单的。传送门

相关文章

  • 总结一下js的函数类型

    几个概念 在js中,函数就是个对象 函数名就是个指向函数对象的指针 函数的三种声明方式 函数声明 函数表达式 使用...

  • js 随机函数

    在写js中,我们经常遇见 js 随机函数,总结一下最近写验证码的时候 用到过的js 随机函数 Math.rando...

  • javaScript中数据类型转换方法

    JS 数据类型转换 方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了...

  • 数据类型转换

    JS 数据类型转换 方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了...

  • js面试题

    1、js 数据类型 基本数据类型 引用数据类型 2、js 变量和函数声明的提升 在js中变量和函数的声明会提升到最...

  • TypeScript--4.函数

    函数在各个语言里用的太多了,就不赘述,只讨论一下TypeScript的函数跟JS的函数不同的地方. 1.函数类型 ...

  • JS中的数学函数Math

    JS中的数学函数MathMath 称为数学函数,属于对象类型的函数

  • 前端开发入门到实战:JavaScript字符串转换数字

    js 字符串转换数字方法主要有三种: 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供...

  • 前端开发入门到实战:JavaScript字符串转换数字

    js 字符串转换数字方法主要有三种: 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供...

  • 2017-4-1 VUE

    JS的方法 1、类型判断的方法 2、创建对象构造函数 3、JS基础函数和语法

网友评论

      本文标题:总结一下js的函数类型

      本文链接:https://www.haomeiwen.com/subject/bzynlftx.html