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

为什么fn.call()在被赋值给变量后会失败

fn.call()在被赋值给变量后会失败的原因是因为fn.call()是一个函数调用的语法,它用于改变函数的作用域并立即执行该函数。当将fn.call()赋值给一个变量时,实际上是将函数的返回值赋给了这个变量,而不是将函数本身赋给变量。

在JavaScript中,函数是一种特殊的对象,可以像其他对象一样被赋值给变量。但是,当一个函数调用被赋值给变量时,实际上是将函数的返回值赋给了这个变量。而fn.call()是一个函数调用,它返回的是函数执行的结果,而不是函数本身。

如果想要将fn.call()赋值给变量并保持其原有的功能,可以使用一个匿名函数来包装fn.call(),然后将这个匿名函数赋给变量。例如:

代码语言:javascript
复制
var myFunc = function() {
  fn.call();
};

myFunc(); // 调用匿名函数,实际上执行了fn.call()

在这个例子中,myFunc变量被赋值为一个匿名函数,这个匿名函数内部调用了fn.call()。当调用myFunc()时,实际上执行了fn.call()。

需要注意的是,这里的fn.call()是一个示例,实际使用时需要根据具体的函数和参数进行调整。同时,腾讯云相关产品和产品介绍链接地址可以根据具体需求和场景进行选择,这里无法提供具体的推荐。

相关搜索:为什么中间结果在被赋值给int之前很久就被强制转换为?为什么component.ts不能赋值给接口的变量?为什么不能将函数赋值给变量并保留其功能?我的全局变量在被赋给<input>元素时,没有获得赋值给它的新值为什么一个变量在我给它赋值后会重置它的原始值?为什么当我给settings.settings变量赋值时,它们没有更新?为什么我不能将scanf语句直接赋值给C中的变量?为什么java构造函数是这样的。变量没有被赋值给数组?想知道为什么我必须在mysql中赋值给会话变量吗?为什么当我给双精度变量或扩展变量赋值时,我得到了错误的值?为什么在将lambda函数赋值给变量时需要用括号括起来?为什么将一个int赋值给一个std::variant<long int,...>失败?为什么函数调用需要参数名,而赋值给变量的函数不允许参数名?为什么` `await asyncio.create_task()`的行为与将其赋值给变量时有所不同?为什么我不能在node.js中将这个变量重新赋值给一个新值?为什么在将array.find的结果赋值给一个变量时,我得不到定义?'NoneType‘对象没有’append‘属性.为什么会这样,因为我没有将该语句赋值给另一个变量为什么在它()内部的cypress变量仍然是赋值给该变量的最后一个值,而在它的外部()它可以正常工作?(示例)既然number是一个原始类型,为什么它在重新赋值给另一个变量时会改变它的值呢?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

事件的防抖和节流

他们通过对事件的回调函数进行包裹、以保存自由变量的形式来缓存时间信息,最后使用 setTimeout 来控制事件的触发频率。...* 判断上次触发的时间和本次之间的间隔是否大于我们设定的阈值 * 将本次触发的时间赋值last,用于下次判断 * 使用call调用传入的回调函数,并传入参数 * */ 使用:在 onScorll...* 判断timer是否存在,如存在就取消定时器 * 然后创建一个新的定时器,并将id赋值timer * 然后如果再次点击重复上面的操作,一直到delay时间内没点时,定时器执行 * 执行时:...为了避免弄巧成拙,我们需要借力 Throttle 的思想,打造一个“有底线”的 debounce ,等你可以,但我有我的原则:delay 时间内,我可以为你重新生成定时器,但是只要 delay 时间一到,我就必须用户一个响应...定时器内直接赋值,然后call函数, * 大于:直接赋值,然后call函数, */ 使用:在 onScorll 中使用加强版 throttle // 用throttle来包装scroll的回调 const

53420
  • React,优雅的捕获异常进阶篇, 含Hooks方案

    同步方法经过转换后会变为异步方法。 所以理论上,要区分同步和异步方案。 错误处理函数再异常怎么办 功能局限 我们来一一解决。...一览风姿 我们捕获的范围: Class的静态同步方法 Class的静态异步方法 Class的同步方法 Class的异步方法 Class的同步属性赋值方法 Class的异步属性赋值方法 Class的getter...div>{count} } export default React.memo(HooksTestView); 复制代码 我们一览风采之后,先看看我们做了哪些优化,为什么要说优化呢...callback: ErrorHandler) { return function (...args: any[]) { try { const r = fn.call...之后会把全部源码,示例独立出来。 后续 我想肯定有人会问,你用Object.defineProperty,out了,你看vue都用Proxy来实现了。

    1.4K30

    几分钟学会手搓防抖

    click', () => { setTimeout(() => { console.log('提交'); }, 1000) }) 我们获取id为"btn"的按钮元素,并赋值变量...通过addEventListener方法按钮添加了一个点击事件监听器,当用户点击按钮时触发防抖函数debounce返回的函数。...在debounce函数中,我们创建了一个timer变量并且赋值为null,然后返回一个函数。在返回的函数中实现了清除上一个计时器,然后重新设置一个计时器的操作。...但是dobounce函数返回的匿名函数需要引用dobounce函数说明的timer变量。...所以dobounce函数会留下一个小背包(闭包)存放timer变量,让匿名函数可以访问timer变量。 等待点击事件触发匿名函数。当点击事件发生匿名函数执行上下文入栈。

    11710

    前端常见问题

    promise是异步编程的解决方案,可以解决回调地狱的问题 有三种状态,分别是pending(执行中)、resolved(成功,也可以是fulfilled)、rejected(失败),一旦状态发生改变就不会再变...null指的是变量定义并赋值成null,undefined指的是变量定义但未赋值 console.log(null == undefind) // true console.log(null !...1、使用弹性盒布局 2、使用transform布局 3、使用table-cell布局 21、什么是变量提升? 变量提升是指使用var关键字声明的变量在解析时会被提升到最前面。...变量声明会被提升,赋值不会被提升。变量提升后在初始化变量后返回的是undefined。 let、const不存在变量提升。let和const声明的变量会形成暂时性死区,为赋初始值直接访问会报错。...42、Vue 列表为什么加 key?

    86310

    前端day19-JS高级(函数调用的上下文模式)学习笔记

    sayHi: ƒ} //3.构造函数 function Person(name,age){ //1.创建一个空对象 2.this指向这个对象 3.执行赋值代码...('str');//String fn.call(1);//Number fn.call(true);//Boolean //如果传的是undefined...代码不会报错,也不会帮我们修改this,还是原来的window fn.call(undefined); fn.call(null); fn.call();...(自定义构造函数,将原型指向内置对象) /*1.内置构造函数原型添加方法弊端 a.存在潜在bug : 多人开发中,每个人都给内置构造函数原型添加方法,就有可能导致变量名一致...Array.prototype:对象类型赋值的时候拷贝的是地址,修改了myArr的原型之后,Array.prototype也会修改 []:由于空数组的原型会指向Array.prototype

    1.2K10

    call,apply,bind 的完全实现和理 解

    //为什么我一用构造函数举例会下意识命名为foo | bar function Foo(age, sex) { this.blog = "http://zehan.xyz" console.log...别急,其实是因为当使用new操作符来构造绑定函数的时候,bind会忽略这个传入的第一个参数,为什么?...好的,我们来总结一下这几个特性嗷 返回函数 柯里化 new构造的时候忽略传入的上下文对象,把this指向生成的实例 4.2 先实现第一个返回函数特性 那颗太简单了嗷,铁子,干了奥里!...那能不能直接执行fBound.prototype =fn.prototype,将原函数的 prototype 赋值 fBound 呢?...将会影响到原函数的 prototype,所以可以通过 fBound.prototype = Object.create(fn.prototype),以原函数的 prototype为模板,生成一个新的实例对象,并赋值

    73251

    ES6相关概念与ES6新增语法

    1.2为什么使用 ES6 ? 每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语言本身也有一些令人不满意的地方。...解构赋值(★★★) ES6中允许从数组中提取值,按照对应位置,对变量赋值,对象也可以实现解构 数组解构 let [a, b, c] = [1, 2, 3]; console.log(a)//1 console.log...,然后变量进行赋值 如果结构不成功,变量跟数值个数不匹配的时候,变量的值为undefined 数组解构用中括号包裹,多个变量用逗号隔开,对象解构用花括号包裹,多个变量用逗号隔开 利用解构赋值能够让我们方便的去取对象中的属性跟方法...() => {} //():代表是函数; =>:必须要的符号,指向哪一个代码块;{}:函数体 const fn = () => {}//代表把一个函数赋值fn 函数体中只有一句代码,且代码的执行结果就是返回值...);//this 指向 的是箭头函数定义的位置,那么这个箭头函数定义在fn里面,而这个fn指向是的obj对象,所以这个this也指向是obj对象 } } const resFn = fn.call

    43120

    前端面试题锦集:第一期

    封面图 面试只是起点,能力才是终局 声明变量 let, const ,var var 声明变量存在变量提升的问题,容易造成全局变量污染。 let 声明变量只在当前作用域内有效,存在暂时性死区机制。...在变量未声明前对变量进行操作会报错,就是因为存在暂时性死区。只有在变量声明后才可对变量进行操作。 const 使用方法和let基本一致。但是const 保存当前变量的引用。...这个新对象内部的[[prototype]]被赋值为构造函数的prototype属性。 构造函数内部的this被赋值这个新对象。 执行构造函数内部的代码,新对象添加属性。...debounce = function(fn){ let timer = null return function(){ timer = setTimeout(()=>{ fn.call...setTimeout, setInterval为什么是异步的?

    28430

    ES6相关概念及新增语法

    为什么使用 ES6 ? 每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语言本身也有一些令人不满意的地方。...,匹配成功将对象属性的值赋值变量 let person = { name: 'zhangsan', age: 20 }; let { name, age } = person; console.log...,然后变量进行赋值 如果结构不成功,变量跟数值个数不匹配的时候,变量的值为undefined 数组解构用中括号包裹,多个变量用逗号隔开,对象解构用花括号包裹,多个变量用逗号隔开 利用解构赋值能够让我们方便的去取对象中的属性跟方法...() => {} //():代表是函数; =>:必须要的符号,指向哪一个代码块;{}:函数体 const fn = () => {}//代表把一个函数赋值fn 函数体中只有一句代码,且代码的执行结果就是返回值...);//this 指向 的是箭头函数定义的位置,那么这个箭头函数定义在fn里面,而这个fn指向是的obj对象,所以这个this也指向是obj对象     } } const resFn = fn.call

    37810

    掌握前端面试基础系列一: ES6

    最近准备把这些基础知识系统的整理一下,分享大家,以后自己也能看。 刚好假期在家看了ES6相关的东西, 这一篇就从ES6开始吧。...执行代码 x = 1 将 x 变量赋值」为 1 y = 2 将 y 变量赋值」为 2 也就是说 var 声明, 会在代码执行之前就将 创建变量,并将其初始化为 undefined。...这就解释了为什么在 var x = 1 之前 console.log(x) 会得到 undefined。...) 执行 x = 1,将 x 「初始化」为 1(这并不是一次赋值,如果代码是 let x,就将 x 初始化为 undefined) 执行 x = 2,对 x 进行「赋值」 这就解释了为什么在 let x...var在全局作用域下声明变量, 会导致变量挂载在window上, 而另外两者不会。 let 和 const的作用基本一致,但是后者声明的变量不能再次赋值

    38620

    ES6中的变量的解构赋值, 解放我们的双手,实现变量的批量赋值

    ES6——变量的解构赋值 引言 正文 一、数组的解构赋值 解构失败 不完全解构 默认值 二、对象的解构赋值 三、字符串的解构赋值 结束语 引言 变量的解构赋值, 听起来很复杂, 简单点说可以理解成批量操作变量赋值...补充一下: 在给予变量默认值时, 只有当没有对应的值与之匹配时或者与之匹配的是 undefined 时, 才会将默认值赋值自己, 但是如果与之匹配的是 null , 则默认值不起作用, 最后会将 null...: '男'} 就只需要一行代码就可以将对象中的三个值都取出来并赋值三个变量。...但是,我们在使用对象的解构赋值的时候必须要注意,等号左边的顺序是随意的, 系统会根据你的变量名, 优先去对象中寻找与你对象名相同的键, 将它的值赋值这个变量。...,然后放到一个数组中, 赋值等号左边的变量 结束语 好了, 关于变量解构赋值的知识就将这么多,其实还有一些相关知识,例如数值和布尔值的解构赋值、函数参数的解构赋值等, 但我觉得都不常用,所以就没给大家细讲

    1.3K10
    领券