js 创建函数的方式
程序员文章站
2024-03-26 11:19:59
...
js定义函数的方式有以下几种,下面简要介绍这几种方式以及它们各自的特点:
1.函数声明方式
function fun(x = 1){
return x;
}
这是最常见定义函数的方式,其特点式是:存在函数声明提升,会提升到当前作用域顶层
2.函数表达式
let fun = function(x = 1){
return x;
}
// var fun = function(x = 1){
// return x;
//}
这是比较常用的定义函数的方式,将匿名函数赋值给一个变量,其特点是:如果使用let变量声明,和普通的变量一样,不存在变量提升,如果使用var变量声明,会提升到当前作用域顶层。
等价的变形形式:
let fun2 = (x = 1) => x
// var fun2 = (x = 1) => x
3.立即执行函数表达式
let fun = function(x = 1){
return x;
}()
// var fun = function(x = 1){
// return x;
// }()
console.log(fun) // 1
将立即执行函数赋值给fun变量,其特点是:fun实际上不是一个函数引用,而是函数执行后的返回值;和函数表达式一样,如果使用let变量声明,和普通的变量一样,不存在变量提升,如果使用var变量声明,该变量会提升到当前作用域顶层。
等价的变行形式:
let fun = ((x = 1) => x)()
// var fun = ((x = 1) => x)()
4.Function构造函数
let fun = new Function('x = 1', 'return x')
// var fun4 = new Function('x = 1', 'return x')
Function构造函数一般很少被用到,它可以动态创建新的函数,只接受字符串类型的参数,分别用来表示函数参数以及函数体。相当于下面函数表达式形式:
let fun = function(x = 1){
return x;
}
但是需要注意,Function构造函数创建的函数作用域只存在于全局作用域,在一个函数里面用Function构造函数定义的函数取不到该函数的局部变量,这和闭包函数不一样。
var x = 3
function fun(){
var x = 2
return new Function('return x') // 获取不了局部变量
}
console.log(fun()()) // 3
推荐阅读
-
08函数的其他的定义方式.html
-
js 创建函数的方式
-
JavaScript 构造函数继承的几种方式
-
python中为其他函数添加额外功能,而不修改源代码的方式-------装饰器的使用讲解及代码示例(类似于java的装饰设计模式)
-
js—函数的定义、匿名函数、自执行函数
-
手动实现JavaScript中的bind函数 博客分类: js 开发 手动实现JavaScript中的bind函数
-
海创软件组--20200906--Vue项目设置浏览器小图标--JS中使用Element的消息确认框并可触发回调函数!!
-
C/C++语言之通过定义指针函数方式来实现在一个cpp文件里面获取另外一个cpp文件函数的返回值
-
js构造函数与原型对象的区别与联系
-
js打开新窗口的方式 博客分类: javascript jsjavascript窗口