当前位置: 首页 > 知识库问答 >
问题:

VAR名称在Javascript中产生奇怪的结果[重复]

拓拔玺
2023-03-14

假设我们有这样的代码段:

var name = ["Apples","Oranges","Strawberries"];
console.log(name.length);

这段代码产生了27的奇怪结果!!问题似乎在于使用变量名作为“name”,这似乎是一个保留关键字。

但有人能解释为什么会有这种奇怪的行为吗?

共有3个答案

施琦
2023-03-14

JavaScript中变量的范围是什么?这是一个好的开始。基本上,当您在函数外部声明name时,实际上是在隐藏窗口。名称value,这是一个非常非常糟糕的主意(对您声明的任何全局变量都要非常小心-它们实际上是窗口对象的值-包括隐藏现有值)。

正如其他人所说,谷歌Chrome强制类型字符串的事实可能是一个Chrome的怪癖(尽管有些可以理解),但潜在的原因是你只是在做一些你没有意识到自己在做的“危险”的事情:)

钮刚洁
2023-03-14

在全局作用域中,当执行var name=["苹果","橙子","草莓"];时,它与window.name=["苹果","橙子","草莓"];相同。

window.name必须是一个字符串,所以它分配["苹果","橙子","草莓"]. toString()到它是"苹果,橙子,草莓".

长孙绍辉
2023-03-14

它引用window.name,这是窗口的名称。

您可以使用窗口的名称来定位超链接,但它通常并不有用。

有关窗口的更多信息。名称:https://developer.mozilla.org/en-US/docs/Web/API/Window.name

只是在chrome中测试:你不能阻止var name成为window.name,这是一个字符串。无论您将值设置为什么,它都将转换为字符串,以便它是一个有效的窗口名称。所以,name.length是字符串中的字符数。最好避免变量,或者对它们非常小心!

正如我从其他一些评论中看到的,如果你是新手,这是一个奇怪的概念。关注的是window.name指的是什么。window.name是窗口的名称。它的任何用途都是命名窗口。

为Chrome的行为辩护是合乎逻辑的:

如果这个var文档='foo'做了它看起来应该做的事情,您就会覆盖窗口。文档-文档对象-带字符串。这将是一个相当大的问题namewindow的一个属性,就像document一样,它有一个不应该(也不能在Chrome中)被替换的用途。

 类似资料:
  • 我刚刚开始使用活动框架。我给我的Spring启动应用程序添加了依赖项,并想测试非常简单的sequnce流,但我被奇怪的行为卡住了。 所以,我有2个简单的服务,没有任何业务逻辑。 和带有进程定义的xml文件: 我放了一些控制器: 问题是:对于service1,它打印id,但是对于service2,它丢失id。在service2的调试器模式下,由于某种原因,参数id是空字符串。我不明白为什么...

  • 问题内容: 我正在尝试使用SQL设置分页。我想要每页3个结果,这是我所做的: 我检查了很多次,这不是很复杂,但是我的结果并不是我所期望的: 第1页: 第2页 : 第3页: 第4页: 如您所见,第2、3和4页的结果相同…当我一次取4页时: 结果 : 也许我遗漏了一些东西或排序结果以及使用限制/偏移量不兼容,我不知道出了什么问题。 问题答案: 这里的问题是所有行的命中计数均为,因此使用时它们的位置是不

  • 当试图从Hitbox API获取数据时,我得到了一个奇怪的结果。对于一个API的命令,这种情况每次都会发生,而对于另一个API的命令,这种情况只是有时发生。结果差不多是这样(这是我得到的最后一个结果): \U001F\B\0\0\0\0\0\U0003W8SμMU~S N T&N G6C$Z%9IGF[(\U0005\U000F(:6\U000F\B P C\U0015\N\U007F V\U00

  • 下面是我的节点类 下面是我的带有插入方法的链表类 我得到以下结果, 端部插入20 正在打印节点1-->10-->5-->none->NULL

  • 我有一个程序可以读取两个文件(“incompleta.txt”和“completa.txt”),并比较两个文件中是否有相同的名称。其工作原理如下: 它将“completa.txt”中的所有名称存储在ArrayList中 问题是我的“lista.txt”看起来像这样:Image 第二条线完全是混乱和扭曲的。 我的Java代码:

  • 我使用Oracle11g(在Red Hat上)。我有一个带有XMLType列的简单常规表: 我使用Oracle SQL Developer(在Windows上): 很管用。我只有一个牢房。我可以双击并下载整个XML文件。 然后我试图以CLOB的形式得到结果: 很管用。我只有一个牢房。我可以双击并看到整个文本和复制它。但有个问题。当我把它复制到剪贴板时,我只得到前4000个字符。似乎在4000位置有