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

为什么这个简单的Js函数在定义后添加()时不返回值/对象?

这个简单的Js函数在定义后添加()时不返回值/对象的原因是因为在添加()时,函数会立即执行,而不是返回函数本身或函数的返回值。当我们在函数名后面添加()时,JavaScript解释器会立即执行函数,并将函数的返回值作为表达式的结果。如果函数没有明确地返回一个值,那么它将返回undefined。

这种行为是由JavaScript的函数调用机制决定的。当我们在函数名后面添加()时,JavaScript会将函数作为一个可调用的对象,并立即执行它。如果我们希望函数在定义后添加()时返回一个值或对象,我们需要在函数体内明确地使用return语句来返回所需的值。

举个例子,假设有一个简单的函数add,用于将两个数字相加:

代码语言:txt
复制
function add(a, b) {
  return a + b;
}

console.log(add(2, 3)); // 输出 5

在这个例子中,当我们调用add(2, 3)时,函数会返回两个数字的和,即5。但是如果我们在函数名后面添加(),如add()(2, 3),函数会立即执行,并返回undefined,因为函数体内没有明确的返回语句。

总结起来,当我们在定义后的函数名后面添加()时,函数会立即执行,并返回执行结果。如果函数没有明确地返回一个值,它将返回undefined。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Vue 3 setup语法糖到底是什么东西?

setup语法糖经过编译是什么样子为什么setup顶层定义变量可以template中可以直接使用?...这个setup对象就是调用render函数传入第四个变量,我想你应该猜出来了,这个setup对象就是我们前面的setup方法返回对象。...因为setup语法糖顶层定义变量经过编译后会被加入到setup函数返回值对象__returned__中,而非setup顶层定义变量不会加入到__returned__对象中。...因为setup语法糖中import导入组件对象经过编译同样也会被加入到setup函数返回值对象__returned__中,同理template中也可以访问到setup返回值对象,也就可以直接使用这个导入组件了...总结 setup语法糖经过编译就变成了setup函数,而setup函数返回值是一个对象这个对象就是由setup顶层定义变量和import导入组成

11210

React--7: 组件三大核心属性1:state

state没有被定义,那么究其根源是什么没有呢?是this。 为什么会没有this呢? 首先这个函数是我们自定义函数,而Babel将我们jsx转为js时候是严格模式。...它不允许自定义函数this指向window。 我们自定义demo函数中根本拿不到组件实例对象,怎么办?...我们再在state中加一个 wind 变量 ,改变 isHot,wind这个值丢丢,丢,就是合并,否则是覆盖。...因为 demo 函数放在了Weather原型对象上。 3.2 改造自定义函数 首先,我们自定义方法大部分都是作为事件回调。 那我们把这个函数改一下:现在是一个赋值语句。...可以发现是组件实例对象。 3.3 完整代码 简化 ,可以不需要写构造器了,自定义方法要用赋值语句形式+箭头函数

1.5K20

多角度解析Webpack5之Loader核心原理

这里你可以理解这个参数就是loader上下文对象简单来说就是我们使用loader函数this,为了让大家更好理解loader-runner,这里我们并不会涉及webpack对于context对象处理...第四个参数是一个回调函数,它表示pitch loader函数执行完毕这个callback会被调用,如果pitch loader存在返回值那么它第二个参数则会接受到pitch loader执行返回值...webpack5中获取loader方法调用runLoaders方法webpack已经loaderContext中添加这个getOptions实现,从而调用runLoaders方法传入了处理好...js内容吧: 可以看到yarn build之后,生产环境打包代码原本箭头函数已经转化成为了普通函数。...,是已经被babel转译代码,这对于日常开发来说无疑是一种灾难,这里我们src/index.js文件内容很简单只有一个箭头函数

1.1K20

JS面向对象一:MVC面向对象封装

面向对象一些概念: Namespace 命名空间 允许开发人员一个独特, 应用相关名字名称下捆绑所有功能容器。 Class 类 定义对象特征。它是对象属性和方法模板定义....封装Controller.js,但是没有将封装运用,因为自己简历项目比较小,代码结构不复杂,封装反而会难理解,知道如何封装和如何使用思想就可以 封装所有MVC代码 总结 密爱想对象封装MVC...面向对象核心就是实例化一个对象 其他:对象方法 以下引用自MDNjavascript面向对象 如果一个Object属性是函数,那么这个属性叫方法 JavaScript中方法通常是一个绑定到对象普通函数...这就是为什么person1.sayHello() 使用了姓名“Alice”而person2.sayHello()使用了姓名“bob”原因。 然而我们使用不同调用方法, this值也就不同了。...自己理解:call()第一个参数就是this值.如果没用call,默认this是那个调用函数的当前对象.全局作用域中,就是被隐藏window.所以写call()且全局作用于调用函数时候

2.7K20

【愚公系列】2023年03月 其他-Web前端基础面试题(JS_33道)

new 操作符新建了一个空对象这个对象原型指向构造函数 prototype,执行构造函数返回这个对象。...闭包就是就是函数“堆栈”函数返回并不释放,我们也可以理解为这些函数堆栈并不在栈上分配而是堆上分配。当在一个函数定义另外一个函数就会产生闭包。...(2)为什么要用: 匿名自执行函数:我们知道所有的变量,如果不加上 var 关键字,则默认添加到全局对象属性上去,这样临时变量加入全局对象有很多坏处,比如:别的函数可能误用这些变量;造成全局对象过于庞大...【2】如果构造函数使用 return 语句但没有指定返回值,或者返回一个原始值,那么这时将忽略返回值,同时使用这个对象作为调用结果。...new关键字调用时会创建一个新空间,每当创建实例函数体内部this都会指向当前 1、立刻在堆内存中创建一个新对象 2、将新建对象设置为函数this 3、逐个执行函数代码 4、将新建对象作为返回值

89610

前端面试题---JS部分

一个函数内部定义函数会将包含外部函数活动对象添加到它作用域链中,函数执行完毕,其执行作用域链销毁, 但因内部函数作用域链仍然引用这个活动对象,所以其活动对象不会被销毁,直到内部函数被烧毁才被销毁...JS代码执行前,浏览器会对js代码进行扫描,默认把所有带var和function声明变量进行提前声明或者定义,遵循先解析使用原则。...全局上下文:变量定义函数声明 函数上下文:变量定义函数声明,this,arguments 2.执行阶段,就是按照代码顺序依次执行。 那为什么会进行变量提升呢?...总结 解析和预编译过程中声明提升可以提高性能,让函数可以执行时预先为变量分配栈空间 声明提升还可以提高JS代码容错性,使一些规范代码也可以正常执行 函数是一等公民,当函数声明与变量声明冲突...第二种是 AMD 方案,这种方案采用异步加载方式来加载模块,模块加载不影响后面语句执行,所有依赖这个模块语句都定义一个回调函数里,等到加载完成再执行回调函数

71320

JSBridge深度剖析

(),Native中通过addJavascriptInterface添加暴露出来JS对象,然后再该对象内部声明对应API方法。...方法,能拿到JS方法返回值 不适合传输大量数据(大量数据建议用接口方式获取) JS调Native Native中通过引入官方提供JavaScriptCore库(iOS7以上),然后可以将api绑定到...简单说,JSBridge就是定义Native和JS通信,Native只通过一个固定对象调用JS,JS也只通过固定对象调用Native。...callHandler函数内部实现过程 执行callHandler,内部经历了以下步骤: 判断是否有回调函数,如果有,生成一个回调函数id,并将id和对应回调添加进入回调函数集合responseCallbacks...根据api名,本地找寻对应api方法,并且记录该方法执行完回调函数id 根据提取出来参数,根据定义参数进行转化 原生本地执行对应api功能方法 功能执行完毕,找到这次api调用对应回调函数

3.5K60

前端同学经常忽视一个 JavaScript 面试题

出现这个陷阱本质原因体现在这两种类型函数提升和运行时机(解析/运行时)上差异。...当然我们给一个总结:Javascript中函数声明和函数表达式是存在区别的,函数声明JS解析进行函数提升,因此同一个作用域内,不管函数声明在哪里定义,该函数都可以进行调用。...而函数表达式值是JS运行时确定,并且表达式赋值完成,该函数才能调用。...构造函数返回值 传统语言中,构造函数不应该有返回值,实际执行返回值就是此构造函数实例化对象。 而在JS中构造函数可以有返回值也可以没有。 没有返回值则按照其他语言一样返回实例化对象。...之后调用实例化对象getName函数,因为Foo构造函数中没有为实例化对象添加任何属性,当前对象原型对象(prototype)中寻找getName函数

45210

web前端开发初学者十问集锦(5)

1.JS立即执行函数用法 (1)立即执行函数定义 立即执行函数(Immediately Invoked Function)是页面加载立即被执行函数。...也就是函数定义函数调用结合在了一起,是函数一种定义方式,本质上就是函数表达式(命名或者匿名)创建立即执行; (2)立即执行函数书写方式 常见主要有两种方式。...那么JS事件处理函数中使用return作用是什么呢?原来JavaScript事件中调用函数用return返回值实际上是对window.event.returnvalue进行设置。...3.JS获取元素left属性为NaN 我遇到问题是使用JS获取定位为relative元素,解析返回值是一个NaN。我获取left属性代码如下。...对象本身不会被改变原因是引用本质上存放是变量地址(CC++中是这样子JS有待考证,但按照这个就能解释JS对象本身为何不会被改变)。

85620

阿里前端常考面试题汇总

清除浮动方式浮动定义: 非IE浏览器下,容器设高度且子元素浮动,容器高度不能被内容撑开。 此时,内容会溢出到容器外面而影响布局。这种现象被称为浮动(溢出)。...;当对应事件符合触发条件被触发,该线程会把事件添加到待处理队列队尾,等待JS引擎处理;注意:由于JS单线程关系,所以这些待处理队列中事件都得排队等待JS引擎处理(当JS引擎空闲时才会去执行)...因此使用单独线程来计时并触发定时器,计时完毕添加到事件队列中,等待JS引擎空闲执行,所以定时器中任务设定时间点不一定能够准时执行,定时器只是指定时间点将任务添加到事件队列中;注意:W3C...(5)异步http请求线程XMLHttpRequest连接通过浏览器新开一个线程请求;检测到状态变更,如果设置有回调函数,异步线程就产生状态变更事件,将回调函数放入事件队列中,等待JS引擎空闲执行...项目中,一般beforeEach这个钩子函数中进行路由跳转一些信息判断。判断是否登录,是否拿到对应路由权限等等。

1.4K40

前端程序员经常忽视一个JavaScript面试题

出现这个陷阱本质原因体现在这两种类型函数提升和运行时机(解析/运行时)上差异。...当然我们给一个总结:Javascript中函数声明和函数表达式是存在区别的,函数声明JS解析进行函数提升,因此同一个作用域内,不管函数声明在哪里定义,该函数都可以进行调用。...而函数表达式值是JS运行时确定,并且表达式赋值完成,该函数才能调用。...构造函数返回值 传统语言中,构造函数不应该有返回值,实际执行返回值就是此构造函数实例化对象。 而在JS中构造函数可以有返回值也可以没有。 没有返回值则按照其他语言一样返回实例化对象。...之后调用实例化对象getName函数,因为Foo构造函数中没有为实例化对象添加任何属性,当前对象原型对象(prototype)中寻找getName函数

26910

JSPatch 实现原理详解

1.require 调用 require('UIView') ,就可以直接使用 UIView 这个变量去调用相应类方法了,require 做事很简单,就是JS全局作用域上创建一个同名变量,变量指向一个对象...所以做了一个复杂事,就是require生成类对象,把类名传入OC,OC 通过runtime方法找出这个类所有的方法返回给 JSJS对象为每个方法名都生成一个函数函数内容就是拿着方法名去 OC...怎样可以 JS 拿到这个实例对象可以直接调用它实例方法 UIView.alloc().init()?...对于一个自定义id对象,JavaScriptCore 会把这个定义对象指针传给 JS这个对象 JS 无法使用,但在回传给 OC OC 可以找到这个对象。..., JS 里实现了,会走到新增方法逻辑,每个参数类型都变成 id,与这个 protocol 方法匹配,产生错误。

3.4K80

50道JavaScript详解面试题,你需要了解一下

答案是输出为10,因为将对象传递给函数对象相似,仅传递其值,而传递对内存位置实际引用。这就是为什么更改仅影响函数范围内参数原因。 3、控制台输出是什么?...在这种情况下,由于我们两次定义了相同变量,因此,会在控制台上引发错误。 但是,如果我们使用var定义相同变量,则控制台将返回50 。同样,使用const定义变量,我们将得到相同错误。...12、满足所有承诺,以下哪个解决方案可以解决? 答案是C,当我们需要等待执行直到所有的都被解决,Promise.all()会非常有用。 13、控制台输出是什么,为什么?...16、getElementsByTagName是JavaScript函数吗? ,getElementsByTagName是一个Web API函数,就像普通JS函数一样可用。...33、为什么导入模块使用别名? 大多数时候,我们处理具有默认命名约定简单导入,除此之外,有时我们不得不处理名称,因为有的名称较长。在这种情况下,使用别名是有帮助

3.5K40

174道JavaScript 面试知识点总结(上)

原始数据类型直接存储栈(stack)中简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储。 引用数据类型存储堆(heap)中对象,占据空间大、大小固定。...这种继承优点就是对一个简单对象实现继承,如果这个对象不是我们定义类型。缺点是没有办法实现函数复用。...// (3)让函数 this 指向这个对象,执行构造函数代码(为这个对象添加属性) // (4)判断函数返回值类型,如果是值类型,返回创建对象。如果是引用类型,就返回这个引用类型对象。...第二种方式是给 js 脚本添加 defer 属性,这个属性会让脚本加载与文档解析同步解析,然后文档解析完成再执行这个脚本文件,这样的话就能使页面的渲染不被阻塞。...异步,执行完函数或方法,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息,系统会自动触发委托异步过程,从而完成一个完整流程。

1.6K10

盘点前端面试常见15个TS问题,你能答对吗?

TS 开发就能给出编译错误, 而 JS 错误则需要在运行时才能暴露。 作为强类型语言,你可以明确知道数据类型。代码可读性极强,几乎每个人都能理解。 TS 非常流行,被很多业界大佬使用。...泛型是指在定义函数、接口或类时候,预先指定具体类型,使用时再去指定类型一种特性。...TypeScript里允许开发者现在就使用这些特性,并且编译JavaScript可以在所有主流浏览器和平台上运行, 7 什么是构造函数,构造函数作用是什么? 构造函数 ,是一种特殊方法。...主要用来创建对象初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象语句中。而TypeScript构造函数用关键字constructor来实现。...never 表示一个包含值类型,即表示永远不存在值。 拥有 void 返回值类型函数能正常运行。拥有 never 返回值类型函数无法正常返回,无法终止,或会抛出异常。

3.3K40

174道JavaScript 面试知识点总结(上)

当我们使用构造函数新建一个对象,在这个对象内部 将包含一个指针,这个指针指向构造函数 prototype 属性对应值, ES5 中这个指针被称为对象原型。...这种继承优点就是对一个简单对象实现继承,如果这个对象不是我们定义类型。缺点是没有办法实现函数复用。...// (3)让函数 this 指向这个对象,执行构造函数代码(为这个对象添加属性) // (4)判断函数返回值类型,如果是值类型,返回创建对象。如果是引用类型,就返回这个引用类型对象。...第二种方式是给 js 脚本添加 defer 属性,这个属性会让脚本加载与文档解析同步解析,然后文档解析完成再执行这个脚本文件,这样的话就能使页面的渲染不被阻塞。...通过在请求 url 指定一个回调函数,然后服务器返回数据时候,构建一个 json 数据包装,这个包装就是回调函数,然后返回给前端,前端接收到数据,因为请求是脚本文件,所以会直接执行,这样我们先前定义回调函数就可以被调用

1.3K41

【TypeScript】TS进阶-泛型(十)

像C#和Java这样语言中,可以使用泛型来创建可重用组件,一个组件可以支持多种类型数据。 这样用户就可以以自己数据类型来使用组件。 ——摘自官方文档为什么要引入泛型概念呢?...我们定义函数、接口或类时候,预先指定具体类型,而是使用时候再指定类型,先站住位置再说,保证了输入输出保持一致问题。 这里举个例子说明为什么要使用泛型。...我们写一个函数实现返回传递参数值,并且打印这个值,参数类型为string,返回值类型也是string,保证输入输出保持一致。...如果我参数类型是number,返回值类型也是number,我们就需要再写一个函数,是不是有点重复了,如果参数类型,返回值类型可以是个类型变量,可以根据传递值来判断是不是就方便很多啦,比如下面写这个例子...1、常用泛型变量T(Type) :代表类型,定义泛型通常作为第一个类型变量名称K(Key):表示对象键类型U:表示对象键类型V(Value):表示对象值类型E(Element):表示元素或者节点类型

14810

2022年最新前端面试题(大前端时代来临卷起来吧小伙子们..持续维护走到哪记到哪)

函数执行完毕,其执行作用域链销毁, 但因内部函数作用域链仍然引用这个活动对象,所以其活动对象不会被销毁,直到内部函数被烧毁才被销毁。...js构造函数别的后台语言上叫做类)上可以添加一些成员,可以构造函数内部this上添加,可以构造函数本身上添加,通过这两种方式添加成员,就分别称为实例成员和静态成员 实例成员:构造函数中...第二种是 AMD 方案,这种方案采用异步加载方式来加载模块,模块加载不影响后面语句执行,所有依赖这个模块语句都定义一个回调函数里,等到加载完成再执行回调函数。...$set是干什么? 当你发现你给对象加了一个属性,控制台能打印出来,但是却没有更新到视图上,也许这个时候就需要用到this.$set()这个方法了,简单来说this....,我们router.js文件中定义路由里,将需要登陆权限页面加上meta属性,值是对象形式,然后对象中自定义一个属性,属性值就是一个Boolean值,这时候main.js文件全局钩子函数中进行判断

3.2K10

js构造函数,构造函数作用,构造函数和普通函数区别

函数定义方式: 1.声明式函数定义: function 函数名 (){};这种定义方式,会将函数声明提升到该函数所在作用域最开头,也是就无论你在这个函数最小作用域那儿使用这种方式声明函数,在这个作用域内...之所以有构造函数与普通函数之分,主要从功能上进行区别的,构造函数主要 功能为 初始化对象,特点是和new 一起使用。new就是创建对象,从无到有,构造函数就是在为初始化对象添加属性和方法。...4、构造函数返回值 构造函数执行过程最后一步是默认返回 this 。言外之意,构造函数返回值还有其它情况。 没有手动添加返回值,默认返回 this。...使用对象字面量创建一系列同一类型对象,这些对象可能具有一些相似的特征(属性)和行为(方法),此时会产生很多重复代码,而使用构造函数就可以实现代码复用。...(ES6 中 class 与构造函数关 系,通过class定义类 和通过构造函数定义类 二者本质相同。并且js执行时,会将第一种转会为第二种执行。

3.4K10
领券