js面试题---function和=>区别

深度剖析 JS 的箭头函数 = > 与普通函数 function 的区别 ES6 中添加了箭头函数的规范,在常用的前端框架,如 Vue,也会经常使用到箭头函数,今天我们就来深度学习箭头函数(arrow function)。本文主要介绍箭头函数的概念,重点介绍它与普通函数(function)的区别,包括基本语法、this指向、使用场景等。 阅读详情
在JS中,箭头函数并不是简单的function(){}匿名函数的简写语法糖
(语法糖(syntactic sugar)是指编程语言中可以更容易的表达一个操作的语法),
实际上,箭头函数和匿名函数有个明显的区别:
箭头函数内部的this是词法作用域,在编写函数时就已经确定了。
而匿名函数的this指向运行时实际调用该方法的对象,无法在编写函数时确定。
 1  function Test() {
 2     this.num = 100;
 3 
 4     this.func = function(){
 5         console.log(this.num); // 100
 6         setTimeout(function(){
 7             console.log(this.num); // undefined
 8         }, 500);
 9     };
10 }
11 
12 var obj = new Test();
13 obj.func();
这里的方法里调用了setTimeout函数,该函数500毫秒后调用我们定义的函数时,
实际上是window对象调用的,所以这时匿名函数的this是指向window而不是指向obj了。

在箭头函数出现之前一般都是这么写的:

 1 function Test() {
 2     this.num = 100;
 3 
 4     this.func = function(){
 5         console.log(this.num); // 100
 6         var that = this;
 7         setTimeout(function(){
 8             console.log(that.num); // 100
 9         }, 500);
10     };
11 }
12 
13 var obj = new Test();
14 obj.func();

这是利用了闭包的概念。箭头函数可以看做这种方式的语法糖。

如下:

 1 function Test() {
 2     this.num = 100;
 3 
 4     this.func = function(){
 5         console.log(this.num); // 100
 6         setTimeout(() => {
 7             console.log(this.num); // 100
 8         }, 500);
 9     };
10 }
11 
12 var obj = new Test();
13 obj.func();
箭头函数和普通函数的区别
不可以当做构造函数,也就是说,不可以使用 new 命令,否则会抛出错误。
this、arguments、caller等对象在函数体内都不存在。
不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数。
总结
箭头函数除了传入的参数之外,其它的对象都没有!
在箭头函数引用了this、arguments或者参数之外的变量,
那它们一定不是箭头函数本身包含的,而是从父级作用域继承的。

转载于:https://www.cnblogs.com/hammerc/p/7390424.html
SQL中的case when then else end语句的用法示例 case具有两种格式。简单case函数和case搜索函数。 –简单case函数 case sex when '1' then '男' when '2' then '女' else '其他' end –case搜索函数 case when sex = '1' then '男' when sex ... 阅读详情

相关推荐

算法导论之线性规划

线性规划,充斥着运筹学,在图的单源最短路径求解差分约束系统就是用到线性规划。怎么样问题可以建模为线性规划来解决呢?在给定的有限的资源和竞争约束情况下,取得最大化或最小化目标的问题。导论中给出政治竞选问题、航空航线调度问题、钻井采油问题。最大化或最小化目标是函数的因变量,自变量就是资源的约束因素,其函数就是由这些制约因素构成的等式或不等式。下面数学定义下线性规划。 在一般线性规划问题中,最优化一个

医疗影像检索 2万+

name(){}与name: function() {},两种写法有什么区别吗?

接下来,因为微任务队列没空,第一个宏任务没有结束,继续执行微任务队列,所以 pro_then,被显示出来,然后又调用了一次 setTimeout,所以 pro_timeout 进入宏任务队列,成为第 5 个宏任务。答:排版应该是会重新排的,但是如果有些元素的尺寸没有改变,那么它内部不需要重排,当然也就更不需要重新渲染了,但是绘制应该是要重绘的,目前来看,浏览器还没有那么智能。第一个宏任务中,调用了三次 setTimeout(Promise 中的代码也是同步执行的),调用了一次 resolve,打印了三次。

qq_37756660的博客 1279

eNSP-Pro配置又丢了?手把手教你用导出功能防患于未然

本文详细介绍了eNSP-Pro配置防丢失的全套方案,包括运行时内存、虚拟存储设备和宿主机文件系统的配置存储机制,以及多维度备份策略和特殊场景下的恢复技巧。通过优化保存流程、自动化定时导出和版本化管理,帮助网络工程师有效防止配置丢失,提升工作效率。

weixin_42665725的博客 242

function 与 => 的区别

箭头函数除了传入的参数之外,其它的对象都没有!在箭头函数引用了this、arguments或者参数之外的变量,那它们一定不是箭头函数本身包含的,而是从父级作用域继承的。

Theshy08的博客 2157

因内存不足原因导致fragment空白解决方案

在androidx之前,一般我们防止Fragment重建是在actvitity的onCreate方法中使用savedInstanceState?.remove(“android:support:fragments”)或者savedInstanceState?但是在androidx中,使用这两行代码不生效,但是看FragmentActivity中的FRAGMENT_TAG还是android:support:fragments,那为什么会不生效呢,后来点进去看发现。

qq_39431405的博客 547

Win10局域网内文件共享+远程桌面控制保姆级教程(含常见问题解决)

本文提供Win10局域网内文件共享和远程桌面控制的详细教程,包括环境检查、共享文件夹设置、远程桌面连接步骤及常见问题解决方案。通过内置功能实现高效办公协作,提升多设备协同工作效率,特别适合需要频繁传输文件或远程控制场景的专业人士。

rose2的博客 778

Vue function() 和()=>的区别

写promise异步函数的时候,发现有两种写法,一种是菜鸟教程里面的 var n = new Promise(function (resolve, reject) { resolve(); }); 第二种是公司别人写的: var n = new Promise(resolve => { resolve(); }); 然后百度查了下,一般情况下是没区别,如果函数里面用到了this,指向不一样。 参考:https://blog.youkuaiyun.com/github_38851471/arti

wnk1997的博客 2255

第一章 初识SpringBoot

提供大量的自动配置Spring和第三方库,开发者可以根据项目需求选择相关的starters依赖,而无需手动配置大量的Spring配置文件,开箱即用,无需配置XML,无代码生成。Spring Boot与Spring Cloud等框架集成,为构建微服务提供了强大的支持,并通过Spring Cloud实现服务注册、负载均衡、熔断等功能。本质上讲,Spring Boot就是Spring,它做了那些本应我们去做的Spring Bean配置等工作。以上就是一个简单的Spring Boot应用的创建和运行过程。

Calvin的博客 1581

JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() {}有什么区别?

对于新手来说(本人也是新手-_-!),好像var foo = function () {} 和 function foo(){}并没有什么区别,意识里可能就认为就是两种不同的写法而已。但是,通过网上查询资料才知道 事实上是有区别的: 1.var foo = function () {} 这种方式是声明了个变量,而这个变量是个方法,变量在js中是可以改变的。 2.function foo()...

weixin_30824277的博客 229

Python实战:打造学生信息管理系统

通过本教程,我们构建了一个简单的学生信息管理系统,实现了基本的添加、删除、修改和查询功能。当然,这个系统还有很多可以改进和扩展的地方,比如添加用户界面、增加数据持久化功能、支持批量操作等。简介:本文将介绍如何使用Python编写一个功能齐全的学生信息管理系统,包括添加、删除、修改和查询学生信息的基本操作。学生信息管理系统是学校日常管理中不可或缺的一部分,它能够帮助管理人员快速、准确地管理学生信息,提高工作效率。为了实现上述功能,我们可以设计一个包含学生信息的字典,并使用函数来封装各个操作。

铭渊老黄 1492

【手把手教学】YOLOv13的Dilated Reparam Block (DRB) 实现细节与优化技巧

DRB(Dilated Reparam Block)是一种创新的卷积神经网络模块,通过多分支膨胀卷积和结构重参数化技术显著提升模型性能。训练阶段使用不同膨胀率和卷积核大小的并行分支增强特征提取能力,推理阶段则将这些分支融合为单一高效的大核卷积。该方法成功解决了大核卷积的计算复杂度和训练困难等问题,在保持推理效率的同时,使模型准确率提升8.56%,mAP暴涨12.33%。DRB的核心在于训练时复杂、推理时简单的设计哲学,以及膨胀卷积的多尺度特征提取能力,为CNN性能优化提供了新的思路。

FJN110的博客 557

js面试题

JavaScript 的组成 JavaScript 由以下三部分组成: ECMAScript(核心):JavaScript 语言基础 DOM(文档对象模型):规定了访问 HTML 和 XML 的接口 BOM(浏览器对象模型):提供了浏览器窗口之间进行交互的对象和方法 JS 的基本数据类型和引用数据类型 基本数据类型:undefined、null、boolean、number、string、s...

dpy521的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

深入解析 JavaScript 中的 call、apply、bind:用法、差异与面试题

JavaScript 中的 call、apply 和 bind 都是用于改变函数执行时的 this 指向。call 和 apply 会立即执行函数,区别在于传参方式(逐个 vs 数组);bind 则返回绑定了 this 的新函数,可延迟执行。常见应用场景包括:函数柯里化(bind)、求数组最大值(apply)以及类数组转数组(Array.prototype.slice.call)。面试常考手写 bind 实现和三者区别,需注意 call/apply 的立即执行特性与 bind 的延迟绑定差异。

前端圈边缘选手,擅长把 UI 稿 “翻译” 成代码,也擅长在 console.log 里写 “求救信号”。日常状态:要么在调像素级对齐,要么在查 “为什么这个样式只在我电脑上生效”。博客不搞高深理论,只唠实在干货~ 1557

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JavaScript的Function 类型

注:原文出处:https://www.cnblogs.com/whiteMu/p/7399719.html 一,Function定义   Function实际上是对象,与其他引用类型一样具有属性和方法。Function可以通过三种方法进行定义,分别是函数声明语法定义,函数表达式定义和Function构造函数定义。   1.函数声明语法定义 function functionName(v...

mystonelxj的博客 5143

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

前端JS 之 函数方法 function

函数是一个封装了可重用代码的独立代码块,它可以执行特定的任务或计算方法:方法是属于对象的函数。简单来说,方法是对象的一个属性,其值是一个函数。调用方法时,通常是通过对象来调用的,方法可以访问对象的属性。

lingxiaolujun的博客 1204

js面试题总结

闭包: function fun(n,o) { console.log(o) return { fun:function(m){ return fun(m,n); } }; } var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,? var b = ...

deqi4006的博客 3790

【javascript】js常用面试题总结

1、写出下面打印语句输出 console.log(['10','10','10','10','10'].map(parseInt)); console.log(['1', '2', '3'].map(parseInt)); //输出: [10, NaN, 2, 3, 4] [1, NaN, NaN] //解析: /*parseInt(string,radix):将radix进制数转为10进制 ...

长歌的博客 1215

web前端入门到实战:32道常见的js面试题

JS面试题: 【点击这里领取面试题资料】 1.javascript的typeof返回哪些数据类型 string, boolean,number, undefined, function,object 2.例举3种强制类型转换和2种隐式类型转换? 强制(parseInt, parseFloat, number) 隐式(== === + -) 3.split() 和 join() 的区别 split()是将字符串切割成数组的形式,join()是将数组转换成字符串。 4.数组方法pop()、push()、un

weixin_56134381的博客 5074

【原生JS】 前端JS函数Function最常用 20 道面试题总结(含详细代码解析)

10分钟彻底搞定原生JS的Function函数20大面试题,随时可以翻阅背诵练习!

silverclayz的技术分享 876

web前端入门到实战:32道常见的js面试题_var user={ count 1, getcount function(){ return th

全网独播-价值千万金融项目前端架构实战从两道网易面试题-分析JavaScript底层机制RESTful架构在Nodejs下的最佳实践开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】一线互联网企业如何初始化项目-做一个自己的vue-cli思维无价,看我用Nodejs实现MVC代码优雅的秘诀-用观察者模式深度解耦模块前端高级实战,如何封装属于自己的JS库VUE组件库级组件封装-高复用弹窗组件。

2401_84433570的博客 883

【必看】JavaScript面试题集合(三)

JavaScript面试题集合(三) 目录: JS中的事件、事件冒泡和事件捕获、事件委托 javascript 代码中的"use strict 变量范围 js遍历的几种方式 Object与Function的关系 1.JS中的事件模型 事件模型: 详细请参考:https://www.cnblogs.com/leftJS/p/10948138.html JavaScript事件模型主要分为3种:原始事件模型、DOM2事件模型、IE事件模型。 原始事件模型 所有浏览器都支持的事件模型,对于原始事件而言,没

算云烟 283

面试题(javascript篇)

使用call,apply来实现继承 // call(obj, arg1, arg2):将参数1为调用对象的上下文,使调用的方法当做自己的方法来使用。 // 相同点:这两个方法的作用是一样的,都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域 //一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指...

senai_fh博客 402

var和function声明提升的区别

包括变量的和函数在内的所有声明都会在任何代码执行前首先被处理。注意,只有声明本身会被提升,而赋值或其他运行逻辑会留在原地。如果提升改变了代码执行的顺序,会造成非常严重的破坏。当你看到var a = 2时,可能会认为这是一个声明,但JavaScript实际上会将其看出两个声明var a;和a = 2;。第一个定义声明是在编译阶段进行的。第二个赋值声明会被留在原地等待执行阶段。var avar a第一个代码片段会正常输出foo函数声明会被提升,但是函数表达式却不会被提升。} foo();

sinat_25952469的博客 397

面试题-JavaScript

文章目录1-get 请求传参长度的误区2-get 和 post 请求在缓存方面的区别3-说一下闭包4-说一下类的创建和继承5-如何解决异步回调地狱6-说说前端中的事件流7-如何让事件先冒泡后捕获8-说一下事件委托9-说一下图片的懒加载和预加载10-mouseover 和 mouseenter 的区别11-JS 的 new 操作符做了哪些事情12-改变函数内部 this 指针的指向函数(bind,apply,call 的区别)13-JS 的各种位置,比如 clientHeight,scrollHeight,o

互联网小队 7731

JavaScript经典面试题(下)

js面试题+解析 以下面试题是我认为比较有代表性的几道题,每道题目都配有我自己的见解,可能部分习题的讲解存在偏差,欢迎大家多多交流指正 第六题 var x=8; var objA = { x:'good', y:32 } ...

dianligegege的博客 1629
上一篇: javascript中function $( ) {}表示什么函数
下一篇: Vue中$event的用法
我的div呢
博客等级 码龄8年 2粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值