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

前端测试题: 关于箭头函数描述,错误是?

考核内容: 箭头函数使用注意事项 题发散度: ★★ 试题难度: ★ 解题思路: ES6标准新增了一种新函数:Arrow Function(箭头函数)。 为什么叫Arrow Function?...因为它定义用就是一个箭头: x => x * x 上面的箭头函数相当于: function (x) { return x * x; } 关于函数 this 箭头函数看上去是匿名函数一种简写,...但实际上,箭头函数和匿名函数有个明显区别:箭头函数内部this是词法作用域,由上下文确定。...箭头函数完全修复了this指向,this总是指向词法作用域,也就是外层调用者obj: 函数体内 this 对象,绑定定义时所在对象,而不是使用时所在对象 参考代码: 可以看到,THIS并不是函数本身...,而是指向父级 WINDOW,所以this不是自身函数,而是直接父级;所以错误是D 答案: D、函数体内 this 对象,绑定使用时所在对象

4.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

面试官:箭头函数和普通函数区别?箭头函数this指向哪里?

一、箭头函数更直观、简洁 箭头函数为匿名函数 let a = () => {} 有一个参数可省略(),多个的话不能省略(),用 ,号分开 let a = m => {} let b = (m, n..., 其this值为所在上下文this值 let people = { name: 'xiaoming', fn: () => { console.log(this.name) // 没有返回值...console.log(this, '箭头函数 this 执行环境') // window }, fn2: function () { console.log(this.name.../ undefined console.log(b.prototype); // {constructor: ƒ} 五、箭头函数参数不能用arguments,值是有外围非箭头函数所决定 //...函数,不能使用yield关键字 箭头函数this指向为其上下文this,一级一级往上找,直到找到 window 当然箭头函数与普通函数区别还有很多,小编总结也不是很齐全,有想法,请各位看官大大多多交流指正

53230

箭头函数this值

其实那只是其中一个因素,还有一个因素就是在ZnHobbies方法中this已经不属于上一个区块,而这里this并没有name值。...所以 解决办法其中一个就是在ZnHobbies函数中写入 var that = this; 然后将this替换成that,所以输出结果中,就有了lucifer名字啦。...还有的一个办法就是将ZnHobbies函数map改写成箭头函数: ZnHobbies: function () { this.hobbies.map((hobby)=...为什么箭头函数可以达到这样效果呢?是因为箭头函数没有它自己'this'值。它this值是继承于它父作用域。...所以它不会随着调用方法改变而改变,所以这里this值就指向它父级作用域,而上一个this指向是Lucifer这个Object。所以我们就能准确得到Lucifername值啦。

2.2K20

箭头函数与普通函数区别

说到箭头函数和普通函数区别,大家都一定会觉得这是一道高频面试题,但许多人其实对它们理解还不够到位,今天我就来帮大家打造一个更清晰认知。...01  【从定义方式来看】 【普通函数】 定义普通函数方式通常有函数声明和函数表达式: 【箭头函数箭头函数是普通函数语法糖(使用语法糖能够增加程序可读性,从而减少程序代码出错机会),书写要更加简洁...【箭头函数】 无论是严格模式还是非严格模式下,this始终指向window: 箭头函数没有自己执行上下文,this指向是在定义函数时就被确定下来箭头函数this,永远指向外层作用域中最接近自己普通函数...箭头函数会忽略任何形式this指向改变(bind、call、apply等方式无法改变箭头函数this指向),箭头函数this指向是静态: 03 【从构造函数来看】 【普通函数】 通过new关键字调用普通函数...,保存着函数执行时传入参数: 【箭头函数箭头函数没有arguments: 05 【补充】 箭头函数没有prototype属性 箭头函数不能当做Generator函数,不能使用yield关键字

71420

普通函数箭头函数区别

详解箭头函数和普通函数区别以及箭头函数注意事项、不适用场景 箭头函数是ES6API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家喜爱。...}; a(); } 更多关于new.target可以看一下阮一峰老师关于这部分解释。...(a, arguments); // 2 [1,2] } var func2 = (a,a) => { console.log(a); // 报错:在此上下文中不允许重复参数名称 }; func1...undefined var func2 = () => ({foo: 1}); // 用圆括号是正确写法 var func2 = () => { return { foo: 1 // 更推荐直接当成多条语句形式来写...考虑代码可读性,使用普通函数 函数体复杂: 具体表现就是箭头函数中使用多个三元运算符号,就是不换行,非要在一行写完,非常恶心!

84230

关于Kotlin扩展函数与lambda上下文

通常我们在写一个扩展函数,如果传入一个lambda表达式大概是下面这样 inline fun T.apply(block: () -> Unit) { block() } 复制代码 这个时候它上下文是谁呢...在扩展方法内部,这个方法上下文其实就是这个T,也就是调用这个方法对象,所以this == T,这一点很明显。 那么在外部使用时候,如下代码中呢?...} 复制代码 注意,这里虽然调用了apply方法,但是后面的代码块{}实际上是block: () -> Unit这个lambda简写,也就是说我们是处于一个lambda表达式中,所以它上下文自然就是这段代码外部上下文...但是我们知道Kotlin自己带apply方法是可以在这个lambda中去拿到调用它对象,然后去做一些配置操作,也就是说是可以把这个lambda中上下文变成调用者。怎么做呢?...既然这个lambda一家是T一个扩展方法了,那么他内部上下文自然就是这个T了。所以就可以有了如下写法。

30520

普通函数箭头函数区别

1、this指向问题(重要) MDN描述是箭头函数不会创建自己this他只会从自己作用域链上一层继承this,这里我们可以理解为this指向外层第一个普通函数(如果没有,则指向全局对象(可通过...console.log(globalThis) // Window obj.fn() // Window obj.fn2()() // {name: 'zs', fn: ƒ, fn2: ƒ} 1、箭头函数...ReferenceError: arguments is not defined console.log(args); // [1, 2, 3] } fn(1, 2, 3) 3、不能和new一起用,会报错 也就是说箭头函数不能被用作构造函数...console.log(Fn.prototype) // undefined let f = new Fn(); // Uncaught TypeError: Fn is not a constructor 以上就是关于箭头函数和普通函数区别...,最重要就是关于this指向问题,有更多箭头函数知识大家可以看看MDN上内容,里面有很详细讲解,希望本篇文章能够帮助大家解决一些疑惑,感谢您观看。

35810

JavaScript中箭头函数

你可以把函数存储在变量中,把它们作为参数传递给其他函数,并从其他函数中把它们作为值返回。你可以使用JavaScript箭头函数来做所有这些事情。 无圆括号语法 在上述示例中,函数是没有参数。...在本例中,你必须在胖箭头符号(=>)之前添加一对空圆括号()。...这个推断name属性仍然不能作为一个适当标识符,你可以用它来指代函数本身--比如递归、解除绑定事件等。 如何处理this关键字 关于箭头函数,最重要一点是它们处理this关键字方式。...特别是,箭头函数this关键字不会重新绑定。 为了说明这意味着什么,请查看下面的演示。 这里有一个按钮。点击按钮会触发一个从5到1反向计数器,它显示在按钮本身。...// 但是如果我们使用箭头函数,正如我们所看到,它没有自己this上下文,我们会得到意想不到结果: $('body').on('click', () =>{ console.log

2.1K20

JavaScript|箭头函数用法

问题描述 JavaScript ES6标准新增了比较重要一种新函数:Arrow Function(箭头函数),但大多数人都不能很好了解箭头函数用法,也不能区别箭头函数和function(),所以接下来我们就来介绍一下箭头函数...this指向 箭头函数总是函数表达式;并不存在箭头函数声明。...同时箭头函数看上去是匿名函数(它们没有用于递归或者事件绑定 / 解绑定命名引用)一种简写,但实际上,箭头函数和匿名函数有个明显区别:箭头函数内部this是词法作用域,由上下文确定。...3 箭头函数与function()函数区别 通过上面对于箭头函数讲解就可以发现虽然有时候可以将function()函数变为箭头函数,但两者还是有很大区别的: a.箭头函数体内this对象,就是定义时所在对象...function()函数,在使用时候一定要注意箭头函数本身没有this,它this是根据上下文指向语法作用域,所以小编在此建议,如果你还想用this,就最好不要用使用箭头函数写法哦。

71820

箭头函数与普通函数区别详解

箭头函数和普通函数区别 一.外形不同:箭头函数使用箭头定义,普通函数中没有 代码实例如下: // 普通函数 function func(){ // code } // 箭头函数 let func...但是构造函数不能用作构造函数。 四.箭头函数中this指向不同 在普通函数中,this总是指向调用它对象,如果用作构造函数,this指向创建对象实例。...1.箭头函数本身不创建this 也可以说箭头函数本身没有this,但是它在声明时可以捕获其所在上下文this供自己使用。...(2)使用new调用wrap()函数之后,此函数作用域中this指向创建实例化对象。 (3)箭头函数此时被声明,捕获这个this。 (4)所以打印是恩诺2,而不是恩诺1。...总结: (1).箭头函数 this 永远指向其上下文 this ,任何方法都改变不了其指向,如 call() , bind() , apply() (2).普通函数this指向调用它那个对象

81520

简单说 JavaScript箭头函数

注意: 箭头函数放 参数 地方就在 () , 没有参数,() 必须写, 一个参数,() 可写可不写, 多个参数,() 必须写。...箭头函数函数地方在 {}函数体 就 一句 {} 可写可不写, 函数体 不止一句,{} 必须写。 如果不知道,() {} 写不写,该不该省略,那就写,写了不会错。...箭头函数会捕获其所在上下文 this 值,作为自己 this 值。 2、箭头函数 this 不可变。...4、箭头函数没有arguments对象。 1、箭头函数没有自己this。箭头函数会捕获其所在上下文 this 值,作为自己 this 值。...箭头函数会捕获其所在上下文 this 值,作为自己 this 值。 2、箭头函数 this 不可变。

52120

缩短箭头函数小诀窍

基本语法 完整版本箭头函数声明包括: 一对带有参数枚举括号 (param1, param2) 后面跟随箭头 => 以函数体 {FunctionBody} 结尾 典型箭头函数如下所示: const...greet 箭头函数只有一个参数 who 。该参数被包装在一对圆括号(who) 中。 当箭头函数只有一个参数时,可以省略参数括号。...这是我最喜欢箭头函数语法简化形式。...`是一个简洁箭头方法定义。省略了其单个参数 who 周围一对括号,以及大括号 {} 和 return关键字。 5. 简洁并不总是意味着可读性好 我喜欢简洁箭头函数,可以立即展示该函数功能。...结论 箭头函数以提供简短定义能力而闻名。 使用上面介绍诀窍,可以通过删除参数括号、花括号或 return 关键字来缩短箭头函数。 你可以将这些诀窍与粗箭头方法放在一起使用。

58320

JavaScript立即执行函数解释分析(3)—谈谈圆括号()

说明 前两篇文章,我们似乎已经明白为什么,立即执行函数要那样写了,这次为了能更加深入理解,我们来说说圆括号事。...解释 1、分组运算符 在JavaScript中 圆括号 有提高优先级作用,达到低优先级表达式比高优先级表达式更早运算。...var a=1+2*3; //a值为7 var b=(1+2)*3; //a值为9 2、传递参数 在声明函数或者调用函数时候,如果有参数,需要放在圆括号中 //函数声明 传递形参...x function a(x){ console.log(x); } //函数调用 传递实参 2 a(2); 3、调用函数或者方法 函数声明时候是不执行,如果需要执行就要用到圆括号,来调用它...总结 这篇文章主要在说圆括号,也是为了能让大家更加理解立即执行函数,下一篇会对立即执行函数进行最后总结。

77130

对象this指向箭头函数this指向定义

可以看出普通函数this指向了本身对象,而箭头函数this往外层找指向了window,因为window没有name字段所以没有输出。...箭头函数使this从“动态”变成“静态”,实质是内部没有this指向,继承上级对象this指向箭头函数this指向定义时外部作用域this指向,普通函数this指向调用时根据上下文取确认.resp4...为了让后续消息能被安全加密,通信双方需要以安全方式(例如面对面)交换一个密钥,然后就可以使用这个密钥进行安全通信了。这就给通信带了困难,很多时候可能不方便这样面对面的交流。...更致命是,如果需要与多个人通信,与每个人都要重复一遍这个过程,而且交换密钥都不能相同。这样交换密钥和管理密钥成本都很高,甚至是不可行。...3.无法作为构造函数 箭头函数作为匿名函数,没有prototype,没有自己this指向,因此不能使用new构造函数非对称加密密钥不是一个,而是一对。

1.2K40
领券