当前位置: 首页 > 面试题库 >

如果JavaScript具有一流的功能,为什么不能在变量中调用此功能呢?

周阳成
2023-03-14
问题内容

JavaScript被认为具有一流的功能,因此以下代码应该可以工作:

var f = document.getElementById;
var x = f('x');

但是它在所有浏览器上均失败,每个浏览器上都有不同的隐式错误消息。Safari提示“输入错误”。Chrome表示“非法调用”。Firefox说“无法转换JavaScript参数”。

为什么?


问题答案:

因为在JavaScript函数中,arent 绑定
到上下文(this)。您可以使用bind()

var f = document.getElementById.bind(document);


 类似资料:
  • 问题内容: 下面的代码在IE 11中不起作用,它在控制台中引发语法错误 使用二部图进行可视化 此代码导致上述声明中的问题 问题答案: 您正在使用箭头功能。IE11不支持它们。使用函数代替。 这是Babel将其翻译成ES5的内容:

  • 问题内容: 在此页面中,我找到了新的JavaScript函数类型: 我已经知道了什么,以及做的,但不知道什么是注定的。它是什么? 问题答案: 这是一个生成器功能。 生成器是可以退出并稍后重新输入的函数。它们的上下文(变量绑定)将在重新进入时保存。 调用生成器函数不会立即执行其主体。而是返回该函数的迭代器对象。调用迭代器的方法时,将执行生成器函数的主体,直到第一个表达式指定要从迭代器返回的值,或者使

  • 问题内容: 我知道虚函数具有取消引用调用方法的开销。但是我想以现代建筑的速度几乎可以忽略不计。 为什么C ++中的所有函数都不像Java中的虚拟函数那样有特定的原因? 据我所知,在基类中定义虚拟函数是足够/必要的。现在,当我编写父类时,我可能不知道哪些方法会被覆盖。这是否意味着在编写子类时,有人必须编辑父类。这听起来不方便,有时甚至不可能? 更新: 以下是乔恩·斯凯特(Jon Skeet)的回答:

  • 我发现了一个java谓词函数接口示例: 我明白b2是如何工作的——很清楚。编译器如何理解如何使用b1方法?方法boolean start To(String str)只有一个参数。String类没有 boolean start To(String srt1, String srt2)方法。

  • 问题内容: 为什么数据存储Redis具有发布/订阅功能?我首先想到的是实现这样的事情是错误的层。但也许我需要跳出框框思考。 问题答案: Redis被定义为数据结构服务器。Redis提供了多种功能,例如内存缓存,队列,发布订阅等。这对于cloudapp / webstack非常有用,其中3个组件RabbitMQ(排队)+ XMPP(发布订阅)+内存缓存目前可以用redis代替。排队功能不如Rabbi

  • 在空手道中,您可以通过发送json/list调用该功能 例如: 引发错误:路径:$,实际值:'',应为:'30e093da-c4e3-4ee0-b180-e5d0b4302d9f',原因:不是子字符串 步骤: 在日志检查功能中,我试图使用 日志检查功能步骤 我尝试了另一种方法,我把它分配给 我将发送json的另一种方法 步骤为logcheck.feature 例如: 错误抛出:com.intuit