javascript - 奇怪地使用方括号调用函数

标签 javascript

如何使用方括号调用函数?

100['toString']//function toString() { [native code] }
100['toString']['length']//1

这里到底发生了什么?

最佳答案

这是括号符号。可以使用点或括号表示法访问任何属性。因此,由于 toString 是一个属性,您可以使用括号表示法访问它。

对于数字,您也可以使用点语法,但您必须向解析器明确指出点不是小数点。例如,两个点:

100..toString() // equivalent to 100.0.toString

为了避免这种令人困惑的数字语法,括号版本是首选。但在大多数情况下,点表示法允许更简洁和更清晰的语法,尽管您可以在可以使用点时始终使用方括号。

括号语法的好处是:

  • 它应该用于访问存储在变量中的名称的属性
  • 它允许访问名称不是有效标识符的属性。

以及第二个问题的答案。

why does 100['toString']['length'] not evaluate to three?

因为100['toString']是继承自Number.prototype的方法。因此这是一个函数。函数的 length 属性是它接受的显式参数的数量。 Number.prototype.toString接受一个基数参数,唯一的一个。所以结果是 1

关于javascript - 奇怪地使用方括号调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27217035/

相关文章:

javascript - org.openqa.selenium.WebDriverException : unknown error: Runtime. 评估抛出异常:SyntaxError:缺少)在参数列表之后

javascript - 语音识别如何识别 5 和 5 之间的差异?

javascript - 自定义工具提示卡在 Dimple.js 中

javascript - 漂亮地打印不可读的 ClojureScript #js 表单

javascript - 如何使用 WebGl 在 Canvas 上呈现二进制数据?

javascript - 根据选择框中的选项显示单选按钮

javascript - 无法在 recordRTC 中记录更高的帧速率

javascript - 如何防止子元素干扰 HTML5 dragover 和 drop 事件?

javascript - 使用 JavaScript 自定义比较函数合并两个对象数组

javascript - ionic 2 如何在 index.html 中使用常量变量声明?