【每日十分钟前端】基础篇19,普通函数、箭头函数、构造函数的区别

交友盲盒系统从源码部署到运营实战指南 在社交产品开发中,盲盒交友凭借新颖的互动模式快速吸引用户,其核心在于通过双向匹配机制保护隐私并制造惊喜感。这类系统通常基于PHP后端与H5前端构建,依赖LNMP环境提供稳定服务。理解其业务逻辑与部署流程,是上线运营的关键。本文以一套仿Soul风格的运营版盲盒交友系统为例,梳理从环境选型、源码部署、数据库配置到安全加固与性能调优的完整链路,并针对高并发匹配、会话保持、定时任务等常见问题给出排查思路,帮助开发者快速搭建可承载真实流量的社交应用。 阅读详情

【JS】普通函数、箭头函数、构造函数的区别


普通函数、箭头函数、构造函数

函数、普通函数、构造函数

函数隶属于对象,据有[[Call]]属性的对象都为“function”(typeof判断类型的关键);
函数对象支持[[Call]]、[[Construct]]

每个构造函数必须是一个函数对象,想要对某个对象使用new,就得确保对象据有[[Construct]],每个支持[[Construct]]的对象必须支持[[Call]]

构造函数与普通函数区别

调用方式不同,普通函数直接调用,构造函数用new调用
作用不一样,构造函数用来创建新的实例对象
this指向不同,普通函数指向window,构造函数this指向它创建的实例对象

箭头函数

箭头函数没有[[Construct]],不能使用new关键字,不能用作构造函数。
设计者想设计一种简短且不绑定this的函数,所以不让箭头函数具有[[Construct]]方法。
箭头函数中的 this、super、arguments 及 new.target 这些值由外围最近一层非箭头函数决定。

箭头函数特点,与普通函数的区别

(1)、语法更简洁
(2)、箭头函数不会创建自己的this,它的this指向定义时外层执行环境的this,箭头函数中this的指向在它被定义的时候就已经确定了,之后永远不变。
(3)、箭头函数继承而来的this,永远不变。
(4)、.call()、.apply()、.bind()无法改变箭头函数的this指向
(5)、箭头函数不能作为构造函数使用。
(6)、箭头函数没有自己的arguments。
(7)、箭头函数没有原型prototype,let a=()=>{} //a.prototype 是 undefined。
(8)、箭头函数不能用作Generator函数,不能使用yeild关键字

补充:

函数的创建

函数直接声明
function fname(){}

函数表达式声明
let fname = function(){}
这样的函数没有名称,也称为匿名函数
也可以提供函数名,且可以用于函数内部指代其本身
let fname = function fun(n) {return n+fun(n-1)}

构造函数声明
let fname = new Fun(){}

箭头函数
let fname = () => {}

函数提升

函数声明会被提升至当前所在函数范围内的顶部。

注意:
(1)、变量提升只是提升声明变量,却未被定义(访问后面定义的变量为undefined);
(2)、函数的提升是整个已经被声明和被定义的函数(可以访问后面定义的函数)。

arguments对象

在函数内可以用arguments[i]找出传入的参数,i是参数的序数编号。
使用arguments可以获取除了声明参数之外的参数,这在事先不知道会需要多少参数传递给函数时十分有用。

arguments对象是类数组对象,有一个索引编号和length属性,并不拥有所有array对象的操作方法
Array.isArray(arguments) //false
Array.prototype.slice.call(arguments)可以把arguments转化为数组

默认参数:undefined,可以手动设置
箭头函数也可以指定默认参数

函数作为参数

值:具有某种类型的数据
引用:可用来获取特定数据的值

值类型:能直接方法的数据类型。
引用类型:借助引用才能被访问的数组类型。

高阶函数

参数为函数,返回函数
比如快排sort()

形参赋值先于函数提升。

js允许表达式作为参数

函数作用域是可以访问上级作用域下的标志符。
外部作用域无法访问函数内部的任意内容。避免了函数作用域中的标志符不与全局作用域的标志符产生冲突。

我们在全局作用域下额外的添加了新的标志符。
对“隐藏”起来的代码,我们还必须显示地通过函数名才能执行里面的代码。

立即执行函数

(function foo(){ … })():由于函数声明被包含在一对( ) 括号内部,因此成为了一个函数表达式,通过在末尾加上另外一个( )可以立即执行这个函数。

第一个( )将函数声明变成函数表达式
说明不会有函数提升。
第二个( )执行了这个函数。
还可以写成(function(){…}()),两者一致的。

JavaScript的内存分配

值的初始化:
js在定义变量的时候就完成了内存分配

通过函数调用分配内存:
有些函数调用结果是分配对象内存的let n = new Date()
有些方法分配新变量或者新对象a=[1],b=[2],c=a.concat(b)

栈内存和堆内存

堆内存:存储引用数据类型值
栈内存:提供js代码执行的环境和存储基本类型值

使用值
使用值的过程实际上是对分配内存的进行读取与写入操作,读取与写入可能是写入一个变量或者一个对象的属性值,甚至传递函数的参数。

手把手教你学Simulink——基于全桥 LLC 谐振变换器的双向 DC-DC 建模与仿真 本文详细介绍了基于Simulink的双向全桥LLC谐振变换器建模与仿真方法。内容涵盖:1)LLC谐振变换器背景与双向化挑战;2)系统架构设计及关键数学推导(FHA增益分析、双向控制逻辑);3)Simulink建模步骤(功率级搭建、PWM生成、同步整流实现);4)仿真结果分析(正向/反向工作验证、ZVS特性);5)工程实践建议(增益微调、代码生成与HIL测试)。通过手把手教学,帮助读者掌握950V↔48V双向LLC变换器的完整设计流程,实现高效率能量双向流动的同时保持软开关特性,适用于储能系统、车载充电等应用 阅读详情

相关推荐

RWEQ土壤风蚀模型的估算与变化归因分析

本次以介绍RWEQ模型的基本原理及数据需求,再结合案例讲解RWEQ模型中区域地理空间数据库构建的方法和各个参量提取的原理与方法,最后结合典型案例进行综合讲解风蚀模数估算、制图及归因分析。空间分析与制图:提取分析、局部分析、邻域分析、区域分析、插值分析、平滑处理、像元提取、采样与重采样。以某实际应用为案例,掌握RWEQ模型进行当地土壤风蚀量空间分布分析整体流程。地图服务器、在线地图、范围指示器、格网、表格、基础地图服务使用规则介绍。掌握土壤风蚀模型的原理、优势点及因子组成。

2301_77413856的博客 1193

辉太郎看前端(构造函数与箭头函数的区别)

前言 是否能够使用new关键字 是否存在内置对象arguments 两者this指向不同 是否能够通过call(),apply()或bind()方法改变this指向。 是否存在原型。 是否能够使用new关键字 构造函数能够使用new关键字定义函数 箭头函数是匿名函数,不能使用new关键字定义函数 是否存在内置对象arguments 构造函数中存在内置对象arguments,展示上类似于数组。 箭头函数中不存在arguments,可以用...变量名代替。 this的指向 构造函数中的this谁调

辉太郎的博客 603

国内合规开通ChatGPT Plus实操指南:银行卡绑卡与支付全解析

ChatGPT Plus 是 OpenAI 官方推出的高级订阅服务,基于 GPT-4o 多模态大模型提供语音交互、图像理解与长上下文处理能力。其核心使用前提在于完成合规的国际支付绑定,而非网络接入方式。技术原理上,OpenAI 采用 Stripe 支付网关进行风控校验,重点匹配银行跨境权限、卡片类型(仅支持 Visa/Mastercard/Amex 信用卡)、BIN 号段及地理位置一致性。该机制决定了95%的绑卡失败源于银行端配置缺失或卡片不兼容,而非网络问题。实际应用中,PayPal 作为中间支付层可显著

chuannaoxuan4674的博客 1934

ES6新特性-箭头函数

ES6新特性的学习一.箭头函数的基础语法二.箭头函数的高级语法三.箭头函数的this指向 一.箭头函数的基础语法 //一般语法: (参数1, 参数2, …, 参数N) => { 函数声明 } //相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; } (参数1, 参数2, …, 参数N) => 表达式(单一) // 当只有一个参数时,圆括号是省略的: (单一参数) => {函数声明} 单一参数 => {函数声明} // 没有参数的函数应该写成一对

weixin_46115791的博客 1681

40、5G NR射频要求解析

本文详细解析了5G NR射频相关要求,包括参考灵敏度与动态范围的定义、接收机对干扰信号的抗扰性要求(如阻塞、邻道选择性等)、辐射射频要求在FR1和FR2频段的差异,以及多标准无线电基站(MSR)的发展及其对射频要求的影响。内容涵盖测试模型、干扰场景、具体指标和实现挑战,为理解和应用5G NR射频规范提供了全面指导。

qsc901234的博客 245

异步处理优化:多线程线程池与消息队列的选择与应用

本文讨论了两种常见的异步处理方式:多线程线程池和消息队列(MQ)。通过将非核心逻辑异步化,可以提升系统的性能和响应速度。多线程线程池适用于本地并发任务,适合需要快速响应的场景,但无法处理跨服务任务。消息队列则适用于分布式系统,能够解耦服务并保证任务的可靠性和顺序性,适合处理高并发和高可靠性要求的任务。文章提供了实际代码示例,帮助开发者根据业务需求选择合适的异步处理方式。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 170万+

构造函数、箭头函数、回调函数

回调函数在异步编程中非常有用,可以简化复杂的控制流程,并确保在需要时执行正确的操作。但过多的回调嵌套可能会导致回调地狱(Callback Hell),为了避免这种情况,可以使用 Promise、async/await 等更高级的异步处理技术来简化和优化代码结构。它是一种更简洁的函数写法,相较于传统的函数表达式具有一些特殊的行为和用法。回调函数(Callback Function)是一种在 JavaScript 中常见的编程模式,它是一种以参数形式传递给其他函数的函数,用于在特定事件或条件发生时执行。

staunch_firm的博客 1146

第3版•系统集成项目管理工程师(中级) │ 告别迷茫!案例分析高分攻略

🥏第3版•系统集成项目管理工程师(中级) │ 告别迷茫!案例分析高分攻略

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3867

箭头函数与普通函数的区别是什么?能否作为构造函数?

适合需要。

qq_44165941的博客 391

42页Claude 3技术报告解读(Opus, Sonnet, Haiku)

在Claude 3模型中,增加了一个额外的原则到Claude的宪法中,以鼓励尊重残疾人权利,这一原则源自对集体宪法AI的研究。Claude 3模型的训练基于专有的混合数据集,包括截至2023年8月互联网上公开可用的信息,以及第三方提供的非公开数据、数据标注服务和付费承包商提供的数据,还有内部生成的数据。这些初始响应通常包含有害和有毒的内容。Claude 3模型家族在推理、编码和问答任务上展现出卓越的性能,特别是在行业标准基准测试中取得了显著的提升,证明了其在处理复杂问题和提供准确答案方面的能力。

具身机器人和通用AI 2432

光学系统仿真软件:Finesse_(6).噪声分析与优化

在Finesse中,噪声源的定义可以通过在光学元件的参数中添加噪声项来实现。以下是一个简单的示例,展示了如何在激光器和反射镜中定义噪声源。# 定义噪声传递函数# 绘制噪声传递函数plot NTF1在这个例子中,定义了一个噪声传递函数NTF1,描述了激光器L1到反射镜M1的噪声传递过程。plot NTF1命令绘制了噪声传递函数的频谱图。# 定义耦合路径# 绘制耦合噪声频谱图plot C1在这个例子中,定义了一个耦合路径C1,描述了激光器L1和反射镜M1之间的噪声耦合关系。plot C1。

kkchenjj的博客 873

箭头函数、普通函数的区别,this指向

箭头函数和普通函数的区别有哪些? 改变 this 指向的方法有哪些(call、apply、bind)

2203_75479159的博客 1123

面试问题总结——关于YOLO系列(一)

自从刚开始接到的第一个面试开始,到现在为止,陆陆续续也参加了许多场,我像是一个刚从新手村出来的小白,一路的打怪升级刷经验,期间遇到了很多不会的,我都会及时记录总结。 到现在仍然清晰记得,第一次去面试的时候,当时被怼的多惨。。。 说明:本人是非科班出身,本科是机械电子工程专业,硕士期间的研究方向是机器学习和深度学习,因为我的简历上有关于YOLO的项目,所以我着重准备了YOLO系列的面试可能遇到的问题。 决定开启这个面试问题总结的系列,包括YOLO、C++的内容、OpenCV的内容和深度学习方面被提问的问题

boss-dog 1万+

ES2020四大核心特性实战指南:可选链、空值合并、allSettled与globalThis

JavaScript中的空值处理与异步编排长期面临语义模糊、容错脆弱、跨环境不一致等工程痛点。可选链操作符(?.)通过显式短路机制安全访问嵌套属性,彻底规避‘undefined is not an object’错误;空值合并操作符(??)精准区分null/undefined与falsy值,填补了逻辑或(||)的业务语义缺口。Promise.allSettled()实现全量结果收敛,保障关键数据不因单点失败而丢失;globalThis则统一浏览器、Node.js及Worker等运行时的全局对象访问入口。这些

420

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

js[面试题]箭头函数和普通的区别

箭头函数与普通函数的区别 1、外形不同:箭头函数使用箭头定义,普通函数中没有。 2、箭头函数全都是匿名函数:普通函数可以有匿名函数,也可以有具名函数 3、箭头函数不能用于构造函数:普通函数可以用于构造函数,以此创建对象实例。 4、箭头函数中 this 的指向不同: 在箭头函数中不会创建自己的this,只会从自己的作用域链的上一层继承this。(注意其中对象不构成作用域) 在普通函数中,this 总是指向调用它的对象,如果用作构造函数,它指向创建的对象实例。 5、箭头函数不具有 arguments 对象:

qq_41421033的博客 1702

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

箭头函数与普通函数的区别

箭头函数与普通函数的区别 1、外形不同:箭头函数使用箭头定义,普通函数中没有。 2、 箭头函数全都是匿名函数:普通函数可以有匿名函数,也可以有具名函数 3、箭头函数不能用于构造函数:普通函数可以用于构造函数,以此创建对象实例。 4、箭头函数中 this 的指向不同:在普通函数中,this 总是指向调用它的对象,如果用作构造函数,它指向创建的对象实例。 5、箭头函数不具有 arguments 对象:每一个普通函数调用后都具有一个 arguments 对象,用来存储实际传递的参数。但是箭头函数并没有此对象。 6

yzkdcsdn的博客 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

箭头函数和普通函数的区别?

● 箭头函数:箭头函数不没有自己的this,只会从自己的作用域链的上一层继承this. ● 会捕获自己在定义时所处的外层执行环境的this,并继承这个this值。 ● 箭头函数中this的指向在它被定义的时候就已经确定了,之后永远不会改变。箭头函数继承而来的this指向永远不变 ● 箭头函数中的this永远指向它定义时所处的全局执行环境中的this,即便这个函数是作为对象obj的方法调用,它的this依旧指向Window对象。 ● 箭头函数不能作为构造函数使用否则用new调用时会报错! ●

weixin_65635437的博客 501

js中箭头函数和普通函数区别

一.箭头函数和普通函数 箭头函数相当于匿名函数,并且简化了函数定义。 箭头函数有两种格式,一种只包含一个表达式,连{ … }和return都省略掉了。 还有一种可以包含多条语句,这时候就不能省略{ … }和return。 let fun = () => { console.log('111'); } function fun() { //普通函数 console.log('123'); } 二、箭头函数和普通函数的区别 1. 箭头函数不能作为构造函数,而普通函数可以: 箭头函

weixin_43190804的博客 5097

普通函数与箭头函数的区别是什么?

普通函数与箭头函数的区别

qq_51441159的博客 2012

前端面试题:箭头函数和普通函数的区别? 箭头函数为什么不能用作构造函数?

前端面试题:箭头函数和普通函数的区别? 箭头函数为什么不能用作构造函数?

薇z的博客 967

构造函数和普通函数的区别

构造函数和普通函数的区别

LFH_yangguang的博客 1875

一篇讲透:箭头函数、普通函数有什么区别

本文主要总结了箭头函数和普通函数的几大区别,箭头函数是ES6(ECMAScript 6)新增的使用箭头(=>)语法定义函数表达式的能力。任何可以使用函数表达式的地方,都可以使用箭头函数,并且它的语法比传统的函数表达式更加简洁。箭头函数虽然语法简洁,但也有一些场合不适用,需要根据不同的场景选择使用合适的函数。

~~~ 1万+

5. 构造函数和普通函数的区别

1、构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写 2、构造函数和普通函数的区别在于: 调用方式不一样。作用也不一样(构造函数用来新建实例对象) 3、调用方式不一样。 a. 普通函数的调用方式:直接调用 person(); b.构造函数的调用方式:需要使用new关键字来调用 new Person(); 4、构造函数的函数名与类名相同:Person( ) 这个构造函数,Person 既是函数名,也是这个对象的类名 5、内部用this 来构...

sunnnnh的博客 2960

箭头函数和普通函数的常见区别

经过上述分析发现普通函数的功能会比箭头函数更强大一些,但这也不是说我们就要避免使用箭头函数。而是应该根据实际的应用场景来选择。对于使用react hooks来开发前端的我而言,基本很少使用普通函数,大部分的箭头函数使用也未造成开发的影响,代码反而简洁了不少。这两者也没有谁优谁劣的说法,看个人喜好来选择也是可以的。没必要在这些问题上花费过多的时间去争论,哪种让自己用起来更舒服用哪种就行。...

曲鸟 6057

JS函数避坑指南|普通函数VS构造函数VS箭头函数3大区别,this指向再也不懵(新手友好)

本文系统讲解了JavaScript中三种函数的区别与用法:普通函数用于处理逻辑直接调用,构造函数必须用new创建实例,箭头函数继承外层this不可new。重点剖析了new的底层机制、this指向规则和箭头函数特性,并对比了剩余参数与arguments的差异。通过代码实例和易错点分析,帮助开发者掌握函数的核心应用场景,避免常见陷阱,夯实前端基础。核心结论包括构造函数必须配合new、箭头函数this不可变、剩余参数优于arguments等实战要点。

zhangke2024的博客 638

js中构造函数与普通函数的区别

【代码】js中构造函数与普通函数的区别。

yzx231858的博客 1172
上一篇: 【每日十分钟前端】浏览器1,跨域解决方案
下一篇: 【每日十分钟前端】基础篇20,HTTP与HTTPS、文字小于12px、执行上下文和执行栈
黎明初时
博客等级 码龄13年 47粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值