【问题标题】:Using name inside a Array yields different results in Firefox [duplicate]在数组中使用名称会在 Firefox 中产生不同的结果 [重复]
【发布时间】:2016-09-02 03:09:34
【问题描述】:

我想在这里得到一些指导。为此使用 JS Bin。 这里的整个问题是:当用作 VAR 并在数组中时“名称”: --- console.log 打印每个字母:

var word = "Hi";
var name = ["John","Suzette","Mari-Louise","Tinus","Hendrik","Koos","Elna","Elbie"];
// Greeting
greeter(word,name);

function greeter(str,arr){
 var counter;
  for(counter = 0;
    counter < arr.length;
    counter++) {
    console.log(str + " " + arr[counter]);
    }
   }

输出

"Hi J"
"Hi o"
"Hi h"
"Hi n"
"Hi ,"
"Hi S"
"Hi u"

但是,将 VAR 更改为 userName,会产生正确的结果,..我找不到任何对 'name' 的引用作为 JS 中的保留字,所以如果有人可以为我澄清这一点,会很烂的。

var word = "Hi";
var userName = ["John","Suzette","Mari-Louise","Tinus","Hendrik","Koos","Elna","Elbie"];
// Greeting
greeter(word,userName);

function greeter(str,arr){
 var counter;
  for(counter = 0;
   counter < arr.length;
   counter++) {
   console.log(str + " " + arr[counter]);
    }
   }

结果**

"Hi John"
"Hi Suzette"
"Hi Mari-Louise"
"Hi Tinus"
"Hi Hendrik"
"Hi Koos"
"Hi Elna"
"Hi Elbie"

【问题讨论】:

  • 这个问题已经在这里被问过很多次了。请加倍搜索。顺便问一下,“在数组中使用name”是什么意思?
  • @torazaburo:当你不知道会发生什么时,我认为这确实是一个无法搜索的问题。当然,typeof name 可以给你一个提示,但仍然......
  • @Bergi 你是对的。我找了 dup 却找不到。可以吗?
  • @torazaburo stackoverflow.com/search?q=cast+name+string+window+%5Bjs%5D 确实为我工作。但只是因为我自己清理了大部分:-)

标签: javascript arrays keyword reserved


【解决方案1】:

如果您进行调试,您会注意到 name 在您执行代码时已经定义。这是因为全局 window 上下文具有 name 属性,它是字符串。
当您尝试将["a", "b", "c"] 设置为此属性时,浏览器会将其转换为字符串,并变为"a,b,c"。这就是为什么当你迭代它时,你会得到字符。

console.log(name); // it already exists

var name = ["a", "b", "c"]; // assigns window.name property, becomes a string
var nameqwe = ["a", "b", "c"]; // creates local variable

console.log(name);
console.log(nameqwe);

【讨论】:

  • 不,不会变成["a","b","c"]
  • 不,它不会变成["a","b","c"]。它变成"a,b,c"
  • @Bergi 是的,我的错,它变成了a,b,c。它只是适用于[].toString() :)
  • 啊,谢谢 - 有道理
  • 不,它不会变成"a","b","c"。它变成了字符串"a,b,c"
【解决方案2】:

哦,但“名称”是保留的:

http://www.w3schools.com/js/js_reserved.asp

查看 JavaScript 对象、属性和方法

【讨论】:

  • 谢谢 Niles,显然我需要多睡点“竖起大拇指*...
  • 哈!程序员的生活,我仍然认为这是一个令人着迷的发现。
  • 不,它不是“保留的”,这意味着特定的东西。这是window 的内置属性。我不会将人们推荐给 w3schools。 MDN 是更可靠的资源。
  • Keywords on MDN 也是如此。
猜你喜欢
  • 2012-02-02
  • 2023-01-22
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 2013-05-13
相关资源
最近更新 更多