假设我们有这样的代码段:
var name = ["Apples","Oranges","Strawberries"];
console.log(name.length);
这段代码产生了27的奇怪结果!!问题似乎在于使用变量名作为“name”,这似乎是一个保留关键字。
但有人能解释为什么会有这种奇怪的行为吗?
JavaScript中变量的范围是什么?这是一个好的开始。基本上,当您在函数外部声明name
时,实际上是在隐藏窗口。名称
value,这是一个非常非常糟糕的主意(对您声明的任何全局变量都要非常小心-它们实际上是窗口
对象的值-包括隐藏现有值)。
正如其他人所说,谷歌Chrome强制类型字符串的事实可能是一个Chrome的怪癖(尽管有些可以理解),但潜在的原因是你只是在做一些你没有意识到自己在做的“危险”的事情:)
在全局作用域中,当执行var name=["苹果","橙子","草莓"];
时,它与window.name=["苹果","橙子","草莓"];
相同。
window.name
必须是一个字符串,所以它分配["苹果","橙子","草莓"]. toString()
到它是"苹果,橙子,草莓"
.
它引用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'
做了它看起来应该做的事情,您就会覆盖窗口。文档
-文档对象-带字符串。这将是一个相当大的问题name
是window
的一个属性,就像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位置有