2016-09-02 14 views
0

私はここで少し指導したいと思います。これにはJS Binを使用してください。 全体の問題はここにある: "名前" VARとして、配列の内部で使用される:にconsole.logプリント ---それぞれの文字:配列内の名前を使用すると、Firefoxで結果が異なる

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に変更すると、正しい結果が得られます。への参照が見つかりません。は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" 
+0

この質問は、SOに、ここで何度も尋ねたと回答されています。より強く検索してください。ちなみに、 "配列の中で' name'を使うのはどういう意味ですか? –

+0

@torazaburo:これは本当に何が起こっているのかわからないときは、目に見えない問題だと思います。もちろん、 'typeof name'はあなたにヒントを与えることができますが、まだ... – Bergi

+0

@Bergiあなたは正しいです。私はdupを探して、それを見つけることができませんでした。あなたはできる? –

答えて

0

あなたデバッグする場合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);

+0

いいえ、' ["a"、 "b"、 "c"] ' – Bergi

+1

いいえ、 '[" a "、" b "、" c "]にはなりません。 –

+0

@Bergiええ、それは 'a、b、c 'になります。単に' [] .toString() 'を適用します:) –

0

ああしかし、 'name' が予約されています:JavaScriptのオブジェクトの下

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

見て、プロパティ、およびメソッド

+0

ナイルズありがとう、明らかに私はもっともっと寝る必要があるよ "... ... – Hendrik

+0

ha!プログラマーの人生はまだまだ魅力的だと思う。 –

+4

いいえ、「予約済み」ではありません。特定のものを意味します。これは、「ウィンドウ」のビルトインプロパティです。私はw3schoolsに人を紹介しません。[MDN](https://developer.mozilla.org/en- –

関連する問題