JS声明函数的三种方式

JavaScript 声明函数

2022-01-10 更新

1. 函数声明

1
2
3
4
// 函数式声明
function foo(args) {
/* function body */
}

函数声明创建了一个变量,在当前作用域,这个变量就是函数的名称,而且是一个函数对象。这个函数变量存在变量提升,它会提到当前作用域的顶部,也就是说,在函数声明之前可以调用。

例如:

1
2
3
4
console.log(foo);
// -> [Function: foo]

function foo() {}

注意,这种函数声明并不能覆盖已声明的变量。

1
2
3
4
5
6
var fn = "string";

function fn() {}

console.log(fn);
// -> string

2. 函数表达式

1
2
3
4
// 表达式声明
var bar = function(args) {
/* function body */
};

函数表达式创建了一个函数对象。

3. 箭头函数

1
2
3
4
// 箭头函数
var fn = arg => {
/* function body */
}

箭头函数不创建自己的上下文,this指向上文中的this。箭头函数是匿名函数。

4. 构造函数

1
2
3
4
// 使用Funcion构造函数
var baz = new Function("arg1", "arg2", "return arg1 + arg2");
console.log(baz(1, 2));
// -> 3

这种方式创建的函数不能访问当前的作用域,因为没办法创建闭包。他们总是在全局作用域内创建的。

可以通过这种方式获得浏览器全局对象:

1
2
3
4
5
6
(function () {
'use strict';
4var global = new Function('return this')();
4console.log(global == window);
})();
// -> true

题外话

  foobar广泛用在示例代码中是怎么回事呢?foobar相信大家都很熟悉,但是foobar广泛用在示例代码中是怎么回事呢,下面就让小编带大家一起了解吧。
  foobar广泛用在示例代码中,其实就是foobar就如同中文的张三李四,大家可能会很惊讶foobar怎么会广泛用在示例代码中呢?但事实就是这样,小编也感到非常惊讶。
  这就是关于foobar广泛用在示例代码中的事情了,大家有什么想法呢,欢迎在评论区告诉小编一起讨论哦!

常见的代称有:

  • foobar:常常单独使用,如同中文中“某某”

  • foo:如同“张三”

  • bar:如同“李四”

  • baz:如同“王五”

  • qux:如同“赵六”

参考文章

打赏
  • 版权声明: 本博客采用 Apache License 2.0 许可协议。
    转载请注明出处: https://ryzenx.com/2020/06/js-create-function/

谢谢你的喜欢~

支付宝
微信