首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在箭头函数中使用name=arguments作为函数参数是一种好的做法吗?

在箭头函数中使用name=arguments作为函数参数是一种不推荐的做法。箭头函数是ES6中引入的一种新的函数定义方式,它具有更简洁的语法和更方便的作用域绑定特性。然而,箭头函数与传统的函数定义方式有一些重要的区别。

首先,箭头函数没有自己的arguments对象。在箭头函数中使用name=arguments作为函数参数,实际上是将外部作用域中的arguments对象赋值给name变量。这样做会导致两个问题:一是在箭头函数内部无法直接访问arguments对象,因为它是外部作用域中的变量;二是在箭头函数内部修改name变量的值不会影响外部作用域中的arguments对象。

其次,箭头函数的this指向是固定的,指向定义时所在的对象,而不是调用时的对象。这意味着在箭头函数中无法使用call、apply、bind等方法显式地改变this的指向。而arguments对象是与函数调用时的上下文相关的,它与this指向紧密相关。因此,在箭头函数中使用name=arguments作为函数参数会导致this和arguments的指向问题。

综上所述,为了避免混淆和错误,不推荐在箭头函数中使用name=arguments作为函数参数。如果需要在箭头函数中获取函数参数,可以使用rest参数或者使用普通的命名参数。例如:

代码语言:txt
复制
// 使用rest参数获取函数参数
const myFunction = (...args) => {
  console.log(args);
};

// 使用普通的命名参数
const myFunction = (name, age) => {
  console.log(name, age);
};

以上是对于箭头函数中使用name=arguments作为函数参数的回答,希望能够满足您的需求。如果您对云计算、IT互联网领域的其他问题有任何疑问,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

你真的了解ES6函数特性么?

前言 函数是所有编程语言中重要的组成部分,在Es6出现之前 JavaScript的函数语法一直没有太大的变化,从而遗留了很多问题和隐晦的做法,导致实现一些功能需要编写很多代码。...非严格模式下,函数命名参数的变化会体现在arguments对象上,arguments获取的是当前函数的实参,arguments在非严格模式下它跟形参是映射关系,就是形参有变化arguments跟着变。...Es6中使用默认参数值对arguments的影响 在Es6中,如果一个函数使用了默认参数值,那么arguments对象的行为都将与JavaScript中的严格模式下保持一致。...处理无命名参数 在js中函数参数数量是任意的,当传入更少的数量,默认参数的特性可以有效的简化函数声明的代码。当传入更多的数量,Es6也同样提供了更好的方案。...箭头函数 Es6中箭头函数是其中最有趣的特性,箭头函数是一种使用箭头=>定义函数的新语法,但是它与传统的JavaScript函数有些不同,具体看下面几点。

45230

JavaScript中的箭头函数

你可以把函数存储在变量中,把它们作为参数传递给其他函数,并从其他函数中把它们作为值返回。你可以使用JavaScript箭头函数来做所有这些事情。 无圆括号语法 在上述示例中,函数是没有参数的。...这个内部函数又有一个叫做name的参数,并使用greeting和name的值返回一个字符串。...因此,函数处理器中的this也被绑定到全局作用域中--也就是Window对象。 因此,如果你想让this引用程序中的开始按钮,正确的做法是使用一个常规函数,而不是一个箭头函数。...它们从父级继承this的值,正是因为这个特点,在上面这种情况下就是很好的选择。 不正常工作的情况 箭头函数并不只是在JavaScript中编写函数的一种花里胡哨的新方法。...这意味着arguments对象在箭头函数中是不可用的。

2.1K20
  • 掌握JS函数中的几种参数形式(函数基础)

    在本文中,会使用一些有趣的例子来解释 JS 必须有效地处理函数参数的所有特性。 1.函数参数 JS 函数可以有任意数量的参数。咱们来定义具有0、1和2个参数的函数。...注意,如果将undefined设置为第二个参数sum(1, undefined), param2也将初始化为0。 3.解构参数 在JS函数参数中,咱特别喜欢的是解构的特性。...这样可以使用 arguments 对象来获取传入的所有参数。 arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。...:箭头w函数中没有arguments 。...作为arguments的更好替代,可以使用剩余参数特性。它也保存参数列表,但是,它将它们存储到数组中。

    2.8K20

    掌握JS函数中的几种参数形式(函数基础)

    函数是一段结合在一起执行特定任务的代码,函数一般使用参数与外部进行交互。要编写简洁高效的JS代码,必须掌握函数参数。 在本文中,会使用一些有趣的例子来解释 JS 必须有效地处理函数参数的所有特性。...注意,如果将undefined设置为第二个参数sum(1, undefined), param2也将初始化为0。 3.解构参数 在JS函数参数中,咱特别喜欢的是解构的特性。...这样可以使用 arguments 对象来获取传入的所有参数。 arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。...:箭头w函数中没有arguments 。...作为arguments的更好替代,可以使用剩余参数特性。它也保存参数列表,但是,它将它们存储到数组中。

    5.2K41

    深入理解JavaScript函数参数|技术创作特训营第一期

    因此,你甚至可以在声明函数时不设置形参。 上面例子中,foo() 函数的第一个参数是 a,第二个参数是b ,可以通过 arguments[x] 的方式来分别获取同样的值 。...箭头函数中没有 arguments 如果函数是使用箭头语法定义的,那么函数中是没有 arguments 对象的,只能通过定义的形参来访问。...但这个 arguments,并不是箭头函数的,而是属于外部普通函数的,当箭头函数中访问 arguments 时,顺着作用域链找到了外部函数的arguments。...你可以探讨何时使用默认参数,以及如何编写具有良好默认行为的函数。 可变参数:在ES6之后,JavaScript引入了一种新的语法,称为“剩余参数”。...这使得函数可以接受任意数量的参数,而不需要提前指定参数的数量。你可以探讨可变参数的使用方式和限制,并且学习如何编写可变参数函数。 高阶函数:高阶函数是指可以接受函数作为参数或返回函数的函数。

    69950

    JavaScript入门笔记(5)函数

    函数 函数就是最基本的一种代码抽象的方式 函数的声明与调用 JavaScript中声明函数的方法有两种 声明一个有名称的函数,使用类似C语言的function name(arguments) {}...JavaScript中的参数传递方式很灵活,可以使用arguments和rest关键字获取动态数量的参数 arguments关键字指向所有传入的参数,arguments是一个对象,不能使用for of...,在已经申明的参数后添加...rest,在函数中可已使用rest参数获取被声明参数以外的参数 function test_rest(a,b,...rest) { console.log("a =...最常见的做法是用一个var申明函数内部用到的所有变量 方法 被绑定在对象里的函数称为方法,在该函数中可以使用this关键字访问本对象的属性和方法,调用的使用使用对象名.方法名() var test...箭头函数是一种特殊的匿名函数,相对于普通的匿名函数最大的优势在于修复了this指针乱飞的问题,调用箭头函数的时候this指向调用它的对象 只有一句的箭头函数可用(arguments) => (func

    64280

    【译】《Understanding ECMAScript6》- 第二章-函数

    利用这种特性,函数可以根据参数的数量进行不同的处理,通常的做法是,如果某个参数没有被传入,则将其赋值一个默认值。...虽然通过索引值遍历arguments对象并不困难,但这仍然是一种很精细的工作。ES6新增的剩余参数机制可以为上述问题提供相对便利的解决方案。 剩余参数的声明语法是命名参数配合...前缀。...开发者可以根据是否有声明提升的需求来决定使用哪一种声明方式。 ES6的块级域函数在非严格模式与严格模式下的表现有细微的差别。...箭头函数被设计的初衷是在某些应用场景下取代匿名函数,它们不能作为构造函数使用,不具备很长的生命周期。箭头函数的最佳应用场景是作为常规函数的回调函数使用。...箭头函数是ES6的一项重大改进。箭头函数的提出是为了取代匿名函数的应用场景,它有更加简洁的语法,this的语义绑定,并且没有arguments对象。箭头函数的this不能被修改,不能作为构造函数使用。

    1.3K70

    JavaScript参数传递,参数默认值,参数的收集与展开

    因此,在开发中最好不要依赖这种同步机制,也就是说不要同时使用形参和它在arguments 对象中的对应值。...箭头函数中没有 arguments 如果函数是使用箭头语法定义的,那么函数中是没有 arguments 对象的,只能通过定义的形参来访问。...arguments,并不是箭头函数的,而是属于外部普通函数的,当箭头函数中访问 arguments 时,顺着作用域链找到了外部函数的arguments。...在函数中定义了一个对象 defaultObj ,变通地利用其中的属性作为参数的默认值,然后利用 Object.assagin() 把传入的对象和默认对象进行合并,defaultObj 中的属性会被 obj...而剩余参数它不同于 arguments 对象,它是真正的 Array 实例,能够很方便地使用数组方法。并且箭头函数也支持剩余参数。

    70730

    【JS】374- 重学 this 关键字

    默认绑定的另一种情况 在函数中以函数作为参数传递,例如 setTimeOut和 setInterval等,这些函数中传递的函数中的 this指向,在非严格模式指向的是全局对象。...当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this,之后的一序列参数将会在传递的实参前传入作为它的参数。...箭头函数中没有 arguments 常规函数可以直接拿到 arguments 属性,但是在箭头函数中如果使用 arguments 属性,拿到的是箭头函数外层函数的 arguments 属性。...箭头函数中没有自己的this 箭头函数中没有自己的 this,箭头函数中的 this 不能用 call()、apply()、bind() 这些方法改变 this 的指向,箭头函数中的 this 直接指向的是...this直接指向的是 调用函数的上一层运行时,这段代码 obj.foo在调用的时候如果是不使用箭头函数this应该指向的是 obj ,但是使用了箭头函数,往上一层查找,指向的就是全局了,所以输出结果是

    1.5K10

    重学 this 关键字(看完不全懂您找我哦)

    默认绑定的另一种情况 在函数中以函数作为参数传递,例如 setTimeOut和 setInterval等,这些函数中传递的函数中的 this指向,在非严格模式指向的是全局对象。...当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this,之后的一序列参数将会在传递的实参前传入作为它的参数。...箭头函数中没有 arguments 常规函数可以直接拿到 arguments 属性,但是在箭头函数中如果使用 arguments 属性,拿到的是箭头函数外层函数的 arguments 属性。...箭头函数中没有自己的this 箭头函数中没有自己的 this,箭头函数中的 this 不能用 call()、apply()、bind() 这些方法改变 this 的指向,箭头函数中的 this 直接指向的是...this直接指向的是 调用函数的上一层运行时,这段代码 obj.foo在调用的时候如果是不使用箭头函数this应该指向的是 obj ,但是使用了箭头函数,往上一层查找,指向的就是全局了,所以输出结果是

    50920

    《你不知道的JavaScript》-- this(笔记)

    ; foo();//2 在代码中,foo() 是直接使用不带任何修饰的函数引用进行调用的,只能使用默认绑定规则。...2.4 new绑定 在传统的面向类的语言中,“构造函数”是类中的一些特殊方法,使用 new 初始化类时会调用类中的构造函数,通常形式是: something = new MyClass(...); JavaScript...在 JavaScript 中,构造函数只是一些使用 new 操作符时被调用的函数,它们并不会属于某个类,也不会实例化一个类,实际上,它们甚至都不能说是一种特殊的函数类型,只是被 new 操作符调用的普通函数而已...foo(){ console.log(this.a); } var a = 2; foo.call(null);//2 一种常见的做法是使用 apply(...)...--箭头函数,箭头函数不是使用 function 关键字定义的,是使用被称为“胖箭头”的操作符 “=>” 定义的,箭头函数不使用 this 的四种标准规则,而是根据外层(函数或全局)作用域来决定 this

    30220

    重学 this 关键字的用法

    默认绑定的另一种情况 在函数中以函数作为参数传递,例如 setTimeOut和 setInterval等,这些函数中传递的函数中的 this指向,在非严格模式指向的是全局对象。...当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this,之后的一序列参数将会在传递的实参前传入作为它的参数。...箭头函数中没有 arguments 常规函数可以直接拿到 arguments 属性,但是在箭头函数中如果使用 arguments 属性,拿到的是箭头函数外层函数的 arguments 属性。...箭头函数中没有自己的this 箭头函数中没有自己的 this,箭头函数中的 this 不能用 call()、apply()、bind() 这些方法改变 this 的指向,箭头函数中的 this 直接指向的是...this直接指向的是 调用函数的上一层运行时,这段代码 obj.foo在调用的时候如果是不使用箭头函数this应该指向的是 obj ,但是使用了箭头函数,往上一层查找,指向的就是全局了,所以输出结果是

    61810

    什么是高阶函数

    高阶函数是接受另一个函数作为参数或返回一个函数作为返回值或两者兼有的函数。...如果使用function关键字定义(非箭头)函数时,可以在函数内部访问arguments对象,从中取得传进来的每个参数值。...(通过arguments对象的length属性传入的参数个数) 箭头函数中的参数 如果函数是使用箭头语法定义的,那么传给函数的参数将不能使用arguments关键字访问,而只能通过定义的命名参数访问。...虽然箭头函数中没有arguments对象,但可以在包装函数中把它提供给箭头函数。...('ff')); // 'xx ff xx' 复制代码 ES6 写法,只要在函数定义中的参数后面用=就可以为参数赋一个默认值 在使用默认参数时,arguments 对象的值不反映参数的默认值,只反映传给函数的参数

    35010

    JS箭头函数之:为何用?怎么用?何时用?

    el.length); // [2, 3, 4, 7] // 在这个例子中,因为我们只需要`length`属性,所以可以使用参数结构 // 需要注意的是字符串`"length"`是我们想要获得的属性名称...不绑定this 在箭头函数出现之前,每个新定义的函数都有它自己的this值(在构造函数的情况下是一个新对象,在严格模式的函数调用中则为undefined,如果该函数被作为"对象方法"调用则为基础对象等...foo 函数的arguments对象,arguments[0]是 n return f(); } foo(1); // 2 在大多数情况下,使用剩余参数是相对使用arguments对象的更好选择...例如在Vue.js中,有一种通用模式,就是使用mapState将Vuex存储的各个部分,直接包含到Vue组件中。...尽管如此,就像其他的语言特性,他们有各自的优缺点。因此我们使用它应该仅仅是作为一种工具,而不是无脑的简单的全部替换为箭头函数。

    4K10

    【ES6+】003-ES6新特性:简化对象和函数写法、箭头函数

    一、简化对象和函数写法 1、概述 ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁; 2、代码示例及相关说明 )定义函数,箭头函数提供了一种更加简洁的函数书写方式,箭头函数多用于匿名函数的定义; 2、箭头函数的注意点 如果形参只有一个,则小括号可以省略; 函数体如果只有一条语句,则花括号可以省略,函数的返回值为该条语句的执行结果...; 箭头函数 this 指向声明时所在作用域下 this 的值; 箭头函数不能作为构造函数实例化; 不能使用 arguments; 3、特性 箭头函数的this是静态的,始终指向函数声明时所在作用域下的...this的值; 不能作为构造实例化对象; 不能使用 arguments 变量; 4、代码演示及相关说明 注意:箭头函数不会更改 this 指向,用来指定回调函数会非常合适; <!...); getName1.call(school); // 结论:箭头函数的this是静态的,始终指向函数声明时所在作用域下的this的值 // 2、不能作为构造实例化对象 //

    9810

    JS Advance --- ES6语法(二)

    ,而 arguments 对象包含了传给函数的所有实 arguments对象不是一个真正的数组,而rest参数是一个真正的数组,可以进行数组的所有操作 rest参数是ES6中提供的一种替代arguments...的来获取函数参数的方式,所以在开发中推荐使用剩余参数来替换arguments 箭头函数 箭头函数内部没有this,如果需要使用,会沿着作用域链去使用上层作用域中的this 箭头函数内部是没有arguments...的,如果需要使用,可以使用剩余参数进行替换 箭头函数内部是没有显示原型对象prototype,这也就意味着箭头函数只能作为普通函数被调用,是无法使用new关键字来进行调用的 const foo = ()...Steven') // apply的第一个参数是null,表示的是不指定函数调用内部的this,依旧使用原本的那个this // 第二个参数是一个数组,apply在实际调用的时候,会自动将第二个参数解构出来并依次作为函数的参数被传入...,从而覆盖掉它内部的某个属性 Symbol就是为了解决上面的问题,用来生成一个独一无二的值 Symbol值是通过Symbol函数来生成的,生成后可以作为属性名 在ES6中,对象的属性名可以使用字符串,也可以使用

    1.2K10

    ES6箭头函数

    箭头函数具有更短的语法形式,隐式绑定了this,并且没有自己的this、arguments、super 或 new.target。基本语法:箭头函数使用箭头(=>)来分隔参数和函数体。...在上面的示例中,我们定义了一个简单的箭头函数hello,它不带参数,并在函数体中打印了一条消息。隐式返回:箭头函数还具有隐式返回的特性。...let add = (a, b) => a + b;console.log(add(3, 5)); // 输出 8在上面的示例中,箭头函数greet接受一个参数name,并在函数体中使用该参数打印一条问候消息...在greet方法内部,我们使用箭头函数来定义一个延迟执行的函数,该函数打印问候消息并使用this.name访问person对象的name属性。...注意事项:尽管箭头函数具有许多优点,但也有一些限制和注意事项:箭头函数没有自己的this,因此无法用作构造函数。箭头函数也没有自己的arguments对象,但可以通过使用剩余参数语法来获取参数。

    21840
    领券