La raison est que name est spécial et que le navigateur est obligé de le convertir en chaîne lors de l'attribution d'une valeur. name特殊,在赋值的时候浏览器强制转成了string。
var name = [0, 1, 2]
console.log(name) // 输出 "0,1,2"
Parce que window a un attribut intégré name, donc lorsque vous déclarez name globalement, vous attribuez en fait une valeur à window.name. À propos de window.name. Les attributs similaires incluent statut, etc. #🎜🎜#
#🎜🎜#Il n'y a donc aucun problème si vous utilisez name1. En fait, si vous utilisez name dans un environnement non global, ou si vous utilisez name dans un environnement global de nœud, il n'y a pas de virgule. #🎜🎜#
Amis, name est un mot-clé, ne l'utilisez pas pour nommer des variables Vous pouvez taper of et vous constaterez que name est une chaîne et name1 est un objet
Parce que votre portée est globale, la variable name que vous définissez est équivalente à window.name Il s'agit d'une variable globale spéciale à laquelle peut être attribuée n'importe quelle valeur Il effectuera l'opération toString Ici, vous donnez le tableau à window.name. En fait, vous pouvez le sortir et vous constaterez que ce n'est pas un tableau. mais une chaîne Et il se trouve que la chaîne peut être parcourue à l'aide d'une boucle, donc une virgule est sortie name 变量相当于 window.name 它是一个特殊的全局变量 任何值赋值给它都会进行 toString 操作 这里你将数组给 window.name 实际你可以输出看一下会发现它并不是数组而是字符串 而恰好字符串是可以用循环遍历的 所以输出了逗号
var name = [0, 1, 2]
console.log(name) // 0,1,2
console.log(typeof name === 'string') // true
解决方法:不使用全局作用域 加一层自执行函数
(function() {
var name = [0, 1, 2]
console.log(name) // [0, 1, 2]
console.log(Object.prototype.toString.call(name)) // [object Array]
})()
或者使用 ES6 的 let
rrreee
Solution : N'utilisez pas la portée globale et ajoutez une couche de fonction auto-exécutable#🎜🎜#
rrreee
#🎜🎜#Ou utilisez le mot-clé let de ES6 pour définir les variables#🎜🎜#
Je l'ai essayé et cela semble être un problème avec le nom de la variable. Tant qu'il s'agit du nom, chaque caractère sera affiché. La raison spécifique est inconnue
Parce que name est le nom de l'attribut de js et qu'il s'agit d'un champ réservé. Lorsque for in parcourt le champ, il est traité comme une chaîne, donc chaque caractère de la chaîne sera affiché
La raison est que
name
est spécial et que le navigateur est obligé de le convertir en chaîne lors de l'attribution d'une valeur.name
特殊,在赋值的时候浏览器强制转成了string。因为window有内置属性
name
,所以你在全局下声明name其实就是在给window.name赋值。关于window.name。类似的属性还有status
等所以你用
Parce que window a un attribut intégréname1
rrreeename
, donc lorsque vous déclarez name globalement, vous attribuez en fait une valeur à window.name. À propos de window.name. Les attributs similaires incluentstatut
, etc. #🎜🎜# #🎜🎜#Il n'y a donc aucun problème si vous utilisezname1
. En fait, si vous utilisez name dans un environnement non global, ou si vous utilisez name dans un environnement global de nœud, il n'y a pas de virgule. #🎜🎜#Amis, name est un mot-clé, ne l'utilisez pas pour nommer des variables
.Vous pouvez taper of et vous constaterez que name est une chaîne et name1 est un objet
Parce que votre portée est globale, la variable
name
que vous définissez est équivalente àwindow.name
Il s'agit d'une variable globale spéciale à laquelle peut être attribuée n'importe quelle valeur Il effectuera l'opération
toString
Ici, vous donnez le tableau à
window.name
. En fait, vous pouvez le sortir et vous constaterez que ce n'est pas un tableau. mais une chaîneEt il se trouve que la chaîne peut être parcourue à l'aide d'une boucle, donc une virgule est sortie
name
变量相当于window.name
它是一个特殊的全局变量 任何值赋值给它都会进行
toString
操作这里你将数组给
window.name
实际你可以输出看一下会发现它并不是数组而是字符串而恰好字符串是可以用循环遍历的 所以输出了逗号
解决方法:不使用全局作用域 加一层自执行函数
或者使用
Solution : N'utilisez pas la portée globale et ajoutez une couche de fonction auto-exécutable#🎜🎜# rrreee #🎜🎜#Ou utilisez le mot-cléES6
的let
rrreeelet
deES6
pour définir les variables#🎜🎜#Parce que le tableau est traité comme une chaîne lorsqu'il est sorti directement sur la console
Je l'ai essayé et cela semble être un problème avec le nom de la variable. Tant qu'il s'agit du nom, chaque caractère sera affiché. La raison spécifique est inconnue
Parce que name est le nom de l'attribut de js et qu'il s'agit d'un champ réservé. Lorsque for in parcourt le champ, il est traité comme une chaîne, donc chaque caractère de la chaîne sera affiché
.