Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >面试题每日一练,测测你对JavaScript箭头函数与arguments对象的理解

面试题每日一练,测测你对JavaScript箭头函数与arguments对象的理解

作者头像
前端达人
发布于 2024-11-25 04:22:58
发布于 2024-11-25 04:22:58
18500
代码可运行
举报
文章被收录于专栏:前端达人前端达人
运行总次数:0
代码可运行

今天的挑战题目考察了JavaScript中箭头函数和 arguments 对象的使用。让我们一起分析这段代码的行为。

代码分析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const func = () => arguments.length;
console.log(func(1, 2, 3));
  1. 箭头函数与 arguments 对象: 在JavaScript中,arguments 对象是一个类数组对象,它包含了传递给函数的所有参数。传统的函数表达式和函数声明中可以访问 arguments 对象。然而,箭头函数没有自己的 arguments 对象。它会从其外层作用域中继承 arguments
  2. 为什么会出错: 当你调用 func(1, 2, 3) 时,JavaScript 会尝试在箭头函数内部访问 arguments。由于箭头函数没有自己的 arguments 对象,JavaScript 会向外查找,但外层作用域中也没有 arguments 的定义。这种情况下,JavaScript 会抛出一个 ReferenceError,说明 arguments 未定义。不论是在严格模式还是非严格模式下,这段代码都会抛出相同的错误,因为 arguments 变量在箭头函数的上下文中是不可用的。
  3. 所以选择 B:Error

解决方法

如果你想在函数中获取传递的参数数量,可以使用 rest 参数代替 arguments,或者改用普通函数表达式。

使用 rest 参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const func = (...args) => args.length;
console.log(func(1, 2, 3));  // 输出 3

使用普通函数表达式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function func() {
  return arguments.length;
}
console.log(func(1, 2, 3));  // 输出 3

结束

箭头函数没有自己的 arguments 对象,这一点在使用时需要特别注意。理解这一点对准确编写和调试JavaScript代码非常重要。你答对了吗?欢迎在评论区分享你的答案和想法!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端达人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JavaScript 函数
例1中得到的结果是 3,而例2中是 Uncaught TypeError: add is not a function。
零式的天空
2022/03/02
6590
JavaScript学习笔记008-this0arguments0箭头函数
Author:Mr.柳上原 付出不亚于任何的努力 愿我们所有的努力,都不会被生活辜负 不忘初心,方得始终 学习要有始有终 狗熊掰棒子的故事大家都听过 都觉得狗熊很傻 也都觉得自己绝对不会那样做 可往往经常做出那样的事情 自己却还没觉得 就比如编程学习 前端学了一半,突然听说Python很火 马上又去学Python, 然后又听说go语言很火...... 无止境的丢了西瓜捡芝麻 一直在不停的学习,却一个都没学好 你与狗熊何其相似!!! <!DOCTYPE html> <!-- 文档类型:标准html文档 -->
Mr. 柳上原
2018/09/05
5020
JavaScript函数(类比php)
js对函数的参数要求不严格,不一定非要传递指定个数的参数 多余的参数会被忽略掉,看下面的例子
王中阳Go
2022/10/26
3910
函数(function)的前世今生
函数就是一段可以反复调用的代码块。函数还能接受输入的参数,不同的参数会返回不同的值。
江米小枣
2020/06/16
7750
函数(function)的前世今生
js 箭头函数详解
es6 新增了使用胖箭头(=>)语法定义函数表达式的能力,很大程度上,箭头函数实例化的函数对象与正式的函数表达式创建的函数对象行为是相同的。任何可以使用函数表达式的地方,都可以使用箭头函数:
IT工作者
2022/05/12
1.6K0
那些年遇到的刁钻JavaScript面试题(可防踩坑)
解析: 这是比较常规的面试题了,主要考察的是 JavaScript 中的隐式类型转换。在 JS 中 + 主要有两个作用:数字相加和字符串拼接,当 + 两边不都为数字时会把它们都转为字符串再拼接,所以第一个 2 会先被转成 '2' 再与第二个 '2' 拼接。
MudOnTire
2020/07/26
7700
JavaScript 实践+理论(总结篇):作用域、闭包、this、对象原型
2. 箭头函数不会使用上述四条规则,而是根据当前的词法作用域来决定 this 的,箭头函数会继承外层函数的 this。
Immerse
2024/03/13
2170
JavaScript 实践+理论(总结篇):作用域、闭包、this、对象原型
JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次。如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法。用于初始化一个新创建的对象的函数被称作构造函数。
Esofar
2018/09/05
3.1K0
JavaScript arguments 对象详解
1. 什么是 arguments MDN 上解释: arguments 是一个类数组对象。代表传给一个function的参数列表。 我们先用一个例子直观了解下 JavaScript 中的 arguments 长什么样子。 JavaScript function printArgs() { console.log(arguments); } printArgs("A", "a", 0, { foo: "Hello, arguments" }); 执行结果是: JavaScript 1["A
用户1667431
2018/04/18
1.6K0
JavaScript的箭头函数与普通函数区别?
箭头函数用更简洁的方式,来完成普通函数的功能,但是不具备普通函数拥有的属性: this 、 arguments 、 super 、 new.target,有两种表达形式:
Learn-anything.cn
2021/11/27
7310
JavaScript闭包与箭头函数
闭包 闭包是JavaScript中最强大的特性之一 JavaScript允许函数嵌套 内部函数可以访问定义在外部函数中的所有变量和函数以及外部函数能访问的所有变量和函数 外部函数不能够访问定义在内部函数中的变量和函数 当内部函数生存周期大于外部函数时,由于内部函数可以访问外部函数的作用域,定义在外部函数的变量和函数的生存周期就会大于外部函数本身 当内部函数以某一种方式被任何一个外部函数作用域访问时,一个闭包就产生了 var pet = function(name) { // The outer func
用户1203875
2018/07/20
9710
看完这几道 JavaScript 面试题,让你与考官对答如流(中)
IIFE或立即调用的函数表达式是在创建或声明后将被调用或执行的函数。 创建IIFE的语法是,将function (){}包裹在在括号()内,然后再用另一个括号()调用它,如:(function(){})()
前端小智@大迁世界
2022/06/15
2.3K0
读书笔记-你不知道的JavaScript(上)
本文首发在我的个人博客:http://muyunyun.cn/ 《你不知道的JavaScript》系列丛书给出了很多颠覆以往对JavaScript认知的点, 读完上卷,受益匪浅,于是对其精华的知识点进行了梳理。 什么是作用域 作用域是一套规则,用于确定在何处以及如何查找变量。 编译原理 JavaScript是一门编译语言。在传统编译语言的流程中,程序中一段源代码在执行之前会经历三个步骤,统称为“编译”。 分词/词法分析 将字符串分解成有意义的代码块,代码块又称词法单元。比如程序var a = 2;
牧云云
2018/05/02
1.1K0
JavaScript(五):函数(闭包,eval)
1.函数的申明:三种方法: function命令 函数表达式:变量赋值 Function构造函数 1 //method 1: function命令 2 function test(){ 3 console.log('hello function'); 4 } 5 6 //method 2:函数表达式,赋值给变量 7 var test1=function(){//这是个匿名函数 8 console.log('hello function1'); 9 };//注意这里有分号
用户1149564
2018/01/11
1.5K0
JavaScript(五):函数(闭包,eval)
你真的了解ES6函数特性么?
hello大家好,又见面了。 假期转瞬即逝,年后开工的第一天,早上是真的不想起床吖,为了不迟到闭着眼睛就穿衣服。 好啦好啦,步入正题啦,打起精神哦!
JowayYoung
2021/04/30
5270
70个JavaScript面试问题
它们是属于虚值,可以使用Boolean(value)或!!value将其转换为布尔值时,值为false。
前端迷
2020/02/19
1.6K0
70个JavaScript面试问题
ES6 系列之箭头函数
很多时候,你可能想不到要这样用,所以再来举个例子,比如在 React 与 Immutable 的技术选型中,我们处理一个事件会这样做:
夜尽天明
2019/06/28
5160
JavaScript学习总结(三)——闭包、IIFE、原型、函数与对象
一、闭包(Closure) 1.1、闭包相关的问题 请在页面中放10个div,每个div中放入字母a-j,当点击每一个div时显示索引号,如第1个div显示0,第10个显示9;方法:找到所有的div,
张果
2018/01/04
1.7K0
JavaScript学习总结(三)——闭包、IIFE、原型、函数与对象
分享一些 JavaScript 函数概念相关的面试题
在编程中,函数是执行特定任务的可重用代码块。函数可以接受输入(称为参数)并返回结果。
前端达人
2024/06/14
1870
分享一些 JavaScript 函数概念相关的面试题
函数与作用域
1.函数声明和函数表达式有什么区别 函数就是一段可以反复调用的代码块。函数还能接受输入的参数,不同的参数会返回不同的值。 JavaScript有三种方法,可以声明一个函数。 1.function命令 function命令声明的代码区块,就是一个函数。function命令后面是函数名,函数名后面是一对圆括号,里面传入函数的参数。函数体放在大括号里面。 function add(s) { console.log(s) } 上面的代码命名了一个print函数,以后使用print()这种形式,就可以调用相应
小胖
2018/06/27
9160
相关推荐
JavaScript 函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验