美文网首页程序员
创建函数的方式和区别

创建函数的方式和区别

作者: Vivian_0430 | 来源:发表于2018-12-23 18:59 被阅读77次

函数声明

function add(a,b){
return a+b;
}
add(1,2);  //3

存在函数提升,在js中最先执行

函数表达式

命名函数

var add = function(a,b){
return a+b;
}
add(1,2); //3

不存在函数提升,等到解析器解析到它时才会执行。
因为这是一个命名函数,js中有变量提升和函数提升,命名函数相当于把函数当做一个值赋给add这个变量,那么此时做的提升应该是:

var add;
add = function(a,b){
return a+b;
}
add(1,2); //3

自调用函数

自调用函数开启了一个新的作用域,避免了变量的污染。
将自调用函数中的局部变量提升为全局变量

;(function(){
  var num = 1;
  window.num = num;
})(window)
匿名函数
(function(a,b){
   console.log(a+b);  //3
})(1,2)
命名函数带返回值
var add = (function(a,b){
     return a+b;
})(1,2)

函数构造法(很少用)

也就是创建Function对象

var add = new Function('a','b','return a+b');
console.log(add(1,2));

注:传参参数必须加引号。
一般不推荐这种方法创建函数,会导致解析两次代码,降低性能。
函数构造法不能获取局部变量:

var num = 1;
function foo(){
    var num = 2;
    return new Function('return num');
}
foo()();   //1

相关文章

  • 创建函数的方式和区别

    函数声明 存在函数提升,在js中最先执行 函数表达式 命名函数 不存在函数提升,等到解析器解析到它时才会执行。因为...

  • 三种方式创建函数及构造函数与普通函数之间的区别

    创建函数的三种方式:函数声明,函数表达式,函数对象 函数声明 函数表达式 函数对象形式 构造函数和普通函数的区别 ...

  • 【js致死点】函数

    函数定义有两种方式 函数声明和函数表达式(new function 不考虑) , 两者的区别就是: 用函数声明创建...

  • JS-进阶-Day1

    创建对象 的三种方式: 工厂模式和自定义构造函数的区别: 构造函数和实例对象之间的关系: 原型的引入 构造函数和实...

  • 对象

    对象是一种特殊的数据类型。 对象的创建方式: 直接创建,工厂模式,构造函数模式, 构造函数模式和工厂模式的区别: ...

  • js 字面量和构造函数创建的字符串有什么区别?

    这两种创建字符串的方式,有何区别? 字面量方式: 构造函数方式:

  • js中普通函数和构造函数的区别

    1、构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写 2、构造函数和普通函数的区别在于...

  • 构造函数与普通函数:

    1、构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写 2、构造函数和普通函数的区别在于...

  • JS-理解原型与原型链

    构造函数 构造函数就是一个普通的函数,创建方式和普通函数没有区别,不同的是构造函数习惯上首字母大写。另外就是调用方...

  • 函数与作用域

    一、函数声明和函数表达式有什么区别 区别:用函数声明创建的函数可以在定义之前就进行调用;而用函数表达式创建的函数不...

网友评论

    本文标题:创建函数的方式和区别

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