Maison > Questions et réponses > le corps du texte
Tout comme le titre. . . Découvrez pourquoi
PHP中文网2017-05-18 10:58:27
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"
因为window有内置属性name
,所以你在全局下声明name其实就是在给window.name赋值。关于window.name。类似的属性还有status
等
所以你用name1
rrreee
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. #🎜🎜#为情所困2017-05-18 10:58:27
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
给我你的怀抱2017-05-18 10:58:27
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
let
de ES6
pour définir les variables#🎜🎜#仅有的幸福2017-05-18 10:58:27
Parce que le tableau est traité comme une chaîne lorsqu'il est sorti directement sur la console
ringa_lee2017-05-18 10:58:27
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
曾经蜡笔没有小新2017-05-18 10:58:27
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é
.