首页
学习
活动
专区
工具
TVP
发布

JS箭头函数 什么时候什么时候不能用,我总结出了4点

前言 大家好,我是zz,相信大家平时在码代码中,都知道箭头函数的用法,但是在面试中,让他讲讲箭头函数的用法,都讲的很片面,通过阅读本文,我们带大家系统的总结下箭头函数,形成自己的箭头函数的知识结构,这样在面试是面试官问到就小菜一碟...箭头函数与普通函数的区别 箭头函数 let arrowSum = (a, b) => { return a + b } 复制代码 普通函数 let zz = function(a, b){...}; ac(); } } z() 复制代码 什么时候不能用箭头函数 1....=>箭头函数 如果你的内层函数表达式依赖于它的函数中调用 let self= this 或者.bind(this)来确保适当的this绑定,那么内层函数表达式可以转换为=>箭头函数 如果你的内函数表达式依赖于封装函数像...,需要词法名称标识符(比如递归 , 构造函数)的函数,以及任何不符合以上几点特征的函数一般都应该避免=>箭头函数 关于this arguments 和 super 的词法绑定。

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

在Python中什么时候Yield什么时候Return

这篇文章解释了你什么时候应该使用它。 最近,我看到很多在结构中使用yield关键字的项目,无论是否需要。 所以我决定研究一下,和大家分享一些相关信息。 最重要的事情先讲。...yield语句仅在定义生成器函数时使用而且仅在生成器函数的主体中使用。 在函数定义中使用yield语句足以导致该定义创建生成器函数,而不是正常函数。...yield语句暂停函数的执行,并将值返回给调用者,但保留足够的状态以使函数能够恢复到停止的地方。当恢复时,函数在最后一次收益运行后立即继续执行。...足够的信息被保存,以便下次调用next()时,函数可以一样进行,而yield语句只是另一个外部调用。 [图片] yield语句不允许在try ... finally结构的try子句中使用。...生成器函数的定义与普通函数一样,但是每当需要生成一个值时,都会使用yield关键字而不是返回值。如果def的主体包含yield,则该函数将自动成为生成器函数

2.3K00

.NET MSBuild 扩展编译时什么时候 BeforeTargets AfterTargets 什么时候 DependsOnTargets?

在为 .NET 项目扩展 MSBuild 编译而编写编译目标(Target)时,我们会遇到用于扩展编译目标的属性 BeforeTargets AfterTargets 和 DependsOnTargets...这三个应该分别在什么情况下呢?本文将介绍其用法。 ---- BeforeTargets / AfterTargets BeforeTargets 和 AfterTargets 是用来扩展编译的。...AfterTargets 带来的此机制来实现的: Roslyn 让 VisualStudio 急速调试底层库方法 如果 BeforeTargets 和 AfterTargets 中写了多个 Target 的名称(分号分隔...WalterlvEvaluateProperties 用于初始化一些属性和参数,其他所有的 Target 都依赖于这些参数 _WalterlvGenerateStartupObject 生成一个类,包含 Main 入口点函数..._WalterlvGenerateStartupObject 生成的入口点函数被 _WalterlvIncludeSourceFiles 加入到编译中,因此 _WalterlvIncludeSourceFiles

23120

什么时候该用 inline 修饰函数

问题 什么时候该用 inline 函数?具体有以下几个问题, 什么时候不应该用 inline 函数? 怎么让编译器不去 inline 函数?...在程序编译阶段,如果遇到内联函数,则将内联函数的实现在当前位置展开。内联的目的是为了减少函数的调用开销,从而提高运行效率,但会增加代码体量。...也就是说,对内联函数进行任何修改,都需要重新编译调用该函数的所有文件代码,因为编译器需要重新更换一次这个内联函数,否则将会继续使用旧的函数。 注意: 内联只是一种建议,并不要求编译器必须执行。...setName(const std::string& name) { m_name = name; } private: std::string m_name; }; 接着再回答你上述的提问, 什么时候该用...如果这个函数的定义也放在头文件,那么你应该用 inline 修饰它。 什么时候不应该用 inline 函数函数执行时间可能较长,比如含有 for、switch、递归等。

86020

入门科普:什么时候要用Python?哪个版本?什么时候不能用?

尽管上述列表看起来显得非常强大了,但这些只不过是Python可能解决的问题领域中的冰山一角。...代码弃和版本更改是系统崩溃中的一些最重要的因素。...它既是编译器也是解释器,有自己的一套全部标准C语言编写的标准程序包和模块。该版本可以直接用于所有流行的当前平台。大多数的Python第三方程序包和库与此版本兼容。...通过使用Jython,你可以所有类型的Java库、包和框架来编写代码。当你更多地了解Java语法和Java中广泛使用的OOP原则(如类、对象和接口)时,它的效果最好。...这些原则是简单的英语编写,即使你以前没有写过代码,很多都是很一目了然的,其中很多蕴含着笑话!Python专注于编写可读的、简单干净的代码。

1.1K20

JavaScript实现异步,什么时候异步编程

什么时候异步编程 在前端编程中(甚至后端有时也是这样),我们在处理一些简短、快速的操作时,例如计算 1 + 1 的结果,往往在主线程中就可以完成。主线程作为一个线程,不能够同时接受多方面的请求。...为了解决这个问题,JavaScript 中的异步操作函数往往通过回调函数来实现异步任务的结果处理。...回调函数 回调函数就是一个函数,它是在我们启动一个异步任务的时候就告诉它:等你完成了这个任务之后要干什么。这样一来主线程几乎不用关心异步任务的状态了,他自己会善始善终。...异步 AJAX 除了 setTimeout 函数以外,异步回调广泛应用于 AJAX 编程。

1K20

什么时候使用虚析构函数

问题 什么时候该定义虚析构函数,为什么要这么做? 回答 当你通过一个基类指针去删除(delete)派生对象的时候,虚析构函数就很用了。...输出如下: Base Constructor Called Derived constructor called Base Destructor called 我们发现派生类的析构函数并没有调用,这是有问题的...,有可能会造成内存泄漏,而解决这个问题的办法就是将 Base 的析构函数定义为虚(virtual), class Base { public: Base(){ cout <<...Constructor called Derived destructor called Base destructor called 总结起来就是:当你的程序满足以下任何一项时,都无需定义基类虚拟析构函数...否则你就应该定义为虚, 这个基类没有派生类 不在堆(heap)内存实例化 没有指向派生类的基类指针或引用 对于 1,还是很常见的,有的时候我们只是单纯的写一个类,并没有派生它的打算,那这个时候就无需将它的析构函数定义为虚

82320

JS箭头函数三连问:为何用、怎么、何时

在现代JS中最让人期待的特性就是关于箭头函数=>来标识。箭头函数有两个主要的优点:其一是非常简明的语法,另外就是直观的作用域和this的绑定。...什么才是箭头函数 JS的箭头函数大概就像python中的lambda(python定义匿名函数的关键字)和ruby中的blocks(类似于闭包)一样。...这种方式的确提供了一种绑定函数的快捷方式,但是函数的表达形式多种多样,相当不直观。如果你尝试在原型使用这种对象,这将不利于测试,同时也会产生很多问题。...,就是你去很多函数的组合调用,尤其是函数的深层调用。...总结 箭头函数JS语言中十分特别的属性,并且使很多情形中代码更加的变化莫测。尽管如此,就像其他的语言特性,他们有各自的优缺点。

2.5K20

JS函数

(){ console.log("hello js") } sayHello() 参数 形式参数 : 在函数声明时, 设置的参数。...//带参数的函数声明 function 函数名(形参1, 形参2, 形参...){ //函数体 } //带参数的函数调用 函数名(实参1, 实参2, 实参3); 计算2个数的和 ...函数作用域 :在 函数内的区域 叫做函数作用域,在函数作用域内声明的变量叫做局部变量 ,局部变量只有在当前函数内才能访问到。...预解析 js执行代码分为两个过程: 预解析过程(变量与函数提升) 代码一行一行执行 console.log(num); var num = 1 console.log(num) 预解析过程 把var声明的变量提升到当前作用域最前面...把函数声明提升到当前作用域的最前面。 如果函数同名 , 后者会覆盖前者 。 如果var声明的和函数声明的同名, 函数优先。

11K40

JS函数

函数定义        函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块;       函数就是包裹在花括号中的代码块       function 函数名()       {        ...这里是要执行的代码      } 二 函数的声明和调用    函数的声明必须使用关键字function    关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数    函数本身不会自动运行...,只有当调用该函数时,才会执行函数内的代码    函数可以通过其名字加上括号中的参数进行调用 三 带有返回值的参数      使用return 语句来返回值 可以将返回值赋值给一个变量,然后对变量进行操作...四 arguments对象    在函数代码中,使用特殊对象 arguments存储函数调用传递给该函数的所有参数   可以 arguments 对象检测函数的参数个数,引用属性 arguments.length...sun+=arguments[i]; } return sun; } var s= sum(2,3,4,5);//虽然sum函数时没有参数的

5.2K20

JS 函数

函数定义 在JavaScript中另一个基本概念是函数, 它允许你在一个代码块中存储一段用于处理单任务的代码,然后在任何你需要的时候一个简短的命令来调用,而不是把相同的代码写很多次。...(匿名函数): function() { alert('hello'); } 这个函数叫做匿名函数 — 它没有函数名!...不以function开头的函数语句就是函数表达式定义。 匿名函数也称为函数表达式。函数表达式与函数声明有一些区别。...(4, 3); 注意: 不推荐使用 Function 构造函数创建函数,因为它需要的函数体作为字符串可能会阻止一些JS引擎优化,也会引起其他问题。...函数显式参数(Parameters)与隐式参数(Arguments) 显式参数在函数定义时列出。 函数隐式参数在函数调用时传递给函数真正的值。

5.7K10
领券