js 匿名函数与箭头函数
时间: 2023-12-08 15:06:55 浏览: 331
js中的匿名函数和箭头函数有一些区别。匿名函数是指在函数定义时没有给函数命名的一种函数。它可以通过将函数赋值给一个变量来使用。而箭头函数是ES6中新增的一种函数定义方式,它的语法更加简洁,可以用来替代匿名函数。
匿名函数不能够提前调用,也就是说在函数声明之后才能调用它。而箭头函数没有这个限制,可以在定义之前或之后都能正常调用。
另外,箭头函数比匿名函数更加简化,当箭头函数只包含一个表达式时,可以省略花括号和return关键字。而匿名函数中的返回值需要通过return语句来指定。
举个例子:
```javascript
// 匿名函数
var fn = function(){
console.log("hello js");
}
fn(); // 输出 hello js
// 箭头函数
var arrowFn = () => {
console.log("hello arrow function");
}
arrowFn(); // 输出 hello arrow function
```
相关问题
求n的阶乘,封装成函数,分别使用函数表达式,匿名函数,箭头函数三种形式定义并调用,使用js写
在JavaScript中,我们可以创建一个求阶乘的函数,并使用函数表达式、匿名函数和箭头函数三种方式进行定义。以下是每种形式的代码示例:
1. 函数表达式形式:
```javascript
function factorial(n) {
if (n < 0) return "Invalid input";
else if (n === 0 || n === 1) return 1;
else {
let result = 1;
for (let i = 2; i <= n; i++) {
result *= i;
}
return result;
}
}
// 调用函数
console.log(factorial(5)); // 输出 120
```
2. 匿名函数形式(立即执行函数表达式,IIFE):
```javascript
const factorial = function(n) {
if (n < 0) return "Invalid input";
else if (n === 0 || n === 1) return 1;
else {
let result = 1;
for (let i = 2; i <= n; i++) {
result *= i;
}
return result;
}
};
// 调用函数
console.log(factorial(5)); // 输出 120
```
3. 箭头函数形式:
```javascript
const factorial = n => {
if (n < 0) return "Invalid input";
else if (n === 0 || n === 1) return 1;
else {
let result = 1;
for (let i = 2; i <= n; i++) {
result *= i;
}
return result;
}
};
// 调用函数
console.log(factorial(5)); // 输出 120
```
js匿名函数的this指向
在JavaScript中,匿名函数的this指向取决于函数的执行环境。根据引用[1]中的总结,可以得出以下结论:
1. 当匿名函数被直接调用时,其中的this指针永远指向window对象。
2. 如果匿名函数是作为对象的方法调用的,this指向调用该函数的对象。
3. 如果匿名函数通过new关键字创建一个新的对象,this指向新建出来的对象。
4. 在匿名函数内部,可以使用变量that或者箭头函数来保存外部函数的this指向,并在需要时使用该变量。
根据引用中的说明,我们可以看到在复杂的例子中,匿名函数的this指向是根据执行环境来决定的。例如,在例子1中,匿名函数func是直接调用的,所以this指向window对象,因此返回了全局变量name的值"the window"。而在例子2和例子3中,匿名函数func是作为对象的方法调用的,所以this指向了调用该函数的对象,分别返回了"my object"和"obj name"。
综上所述,匿名函数的this指向取决于函数的执行环境,包括直接调用、作为对象方法调用和通过new关键字创建对象。
阅读全文