gpt4 book ai didi

javascript - Javascript中的变量怎么可以是函数,却不能被调用呢?

转载 作者:太空宇宙 更新时间:2023-11-04 16:10:42 26 4
gpt4 key购买 nike

我目前正在调查一个网站,发现了一件奇怪的事情。如果我在开发者控制台中找到 PNACL 嵌入元素,并在 Chrome 开发者控制台中对其进行评估,它会记录 >anonymous(),旁边有一个箭头显示它是一个普通的 HTML 元素。但是,typeof temp1(变量名)返回function,但调用它会抛出

Uncaught TypeError: temp1 is not a function
at <anonymous>:1:1

并调用toString()返回“[object HTMLEmbedElement]”>anonymous() 是什么意思,Javascript 变量如何是函数但不可调用?

MCVE:
FF

var el=document.createElement("embed"); //<embed>
typeof el;// "function"
el.toString(); //"[object HTMLEmbedElement]"
el(); // [Exception... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: debugger eval code :: <TOP_LEVEL> :: line 1" data: no]


Chrome

var el=document.createElement("embed"); // anonymous()
typeof el;// "function"
el.toString(); //"[object HTMLEmbedElement]"
el(); //undefined

最佳答案

这是一个known bug ,我一年前就提交了。

受影响的元素:

  • HTMLAllCollection
  • NPObject(?)
  • HTMLObjectElement
  • HTMLEmbedElement

Chrome 团队的回答:

External users have not complained about it, so I'm thinking of Archiving it.

该死的我是一个“外部用户”...

当前状态:已存档

原因:

这些元素有一个[Call]内部方法,因此根据EcmaScripttypeof 必须返回'function'(这使得该错误成为规范错误而不是实现错误......)

关于javascript - Javascript中的变量怎么可以是函数,却不能被调用呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41528269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com